2011-12-12 17 views

Odpowiedz

26

Można to zrobić przy pomocy Ghostscript plus pdftk, ale wymaga to co najmniej 2 różnych kroków.

AFAIK, nie można bezpośrednio kontrolować umieszczania znaczników pdftk. Domyślnie umieszcza znaczek na środku strony, a jednocześnie wykonuje operację "skaluj-dopasuj".

Musisz najpierw poprawić pieczęć, aby umieścić ją na pustej stronie, najpierw w żądanym miejscu. Można to osiągnąć za pomocą Ghostscript w pierwszym kroku. Następnie, w drugim kroku, użyj pdftk do scalenia dwóch plików.

Użyjmy przykładu.

Po pierwsze: Utwórz "stamp-small.pdf". (. Trzeba je już, muszę jeden zademonstrować zasadę)

gs \ 
    -o stamp-small.pdf \ 
    -sDEVICE=pdfwrite \ 
    -g3200x500 \ 
    -c "/Helvetica-Bold findfont 36 scalefont setfont" \ 
    -c "0 .8 0 0 setcmykcolor" \ 
    -c "12 12 moveto" \ 
    -c "(This is my stamp) show" \ 
    -c "showpage" 

Ten przykład był dla Linux lub Mac OS X. W systemie Windows byś go zmodyfikować tak:

gswin32c.exe^
    -o stamp-small.pdf^
    -sDEVICE=pdfwrite^
    -g3200x500^
    -c "/Helvetica-Bold findfont 36 scalefont setfont"^
    -c "0 .8 0 0 setcmykcolor"^
    -c "12 12 moveto"^
    -c "(This is my stamp) show"^
    -c "showpage" 

(Ty może również umieścić wszystko w jednym wierszu, ale pomija znaki kontynuacji linii dla odpowiedniego systemu operacyjnego). To pierwsze polecenie przekazuje serię prostych instrukcji PostScript do linii poleceń Ghostscript i nakazuje utworzyć małą stronę PDF o wymiarach 320x50 pkt. To powinno symulować twój "mały" znaczek, do którego szukasz miejsca.

drugie: Tworzenie całostronicowych (w moim przypadku formatu A4), plik PDF, które mogą być stosowane w trzecim etapie jako prawdziwego znaczka:

gs \ 
    -o A4-stamp.pdf \ 
    -sDEVICE=pdfwrite \ 
    -g5950x8420 \ 
    -c "<</PageOffset [280 790]>> setpagedevice" \ 
    -f stamp-small.pdf 

W systemie Windows:

gswin32c.exe^
    -o A4-stamp.pdf^
    -sDEVICE=pdfwrite^
    -g5950x8420^
    -c "<</PageOffset [280 790]>> setpagedevice"^
    -f stamp-small.pdf 

polecenie to osiągnąć kilka rzeczy:

  1. zajęło początkowo stworzony „s tamp-small.pdf "jako wejście.
  2. Użyto płótna o wymiarach 595x842 pkt. (Czyli o rozmiarze strony ISO A4).
  3. Stosuje małe polecenie PostScript do przesunięcia zawartości wejściowej o 280 punktów w prawo i 790 punktów w górę (współrzędne PostScript i PDF zaczynają się od dolnego lewego rogu).
  4. Tworzy "A4-stamp.pdf" jako wynik.

Skutecznie, mój oryginalny niewielki ciąg znaczków znajduje się teraz w prawym górnym rogu strony A4.

trzecie: Teraz można zastosować tę nową „pieczęć” do oryginalnego pliku PDF za pomocą pdftk:

pdftk original.pdf stamp A4-stamp.pdf output stamped.pdf 

lub stemplowania wszystkich stron wielostronicowego oryginału PDF:

pdftk original.pdf multistamp A4-stamp.pdf output stamped.pdf 

Ten przykład powinien dać ci dość wyobrażenia o tym, jak opracować podobną procedurę dla twojego własnego logo.pdf, co zrobiłem dla mojego stamp-small.pdf. (Zrobiłem to w prawym górnym rogu, a ty w lewym górnym rogu.)

+0

Dziękuję za odpowiedź. Ten problem został rozwiązany za pomocą skryptu PHP z użyciem FPDI. –

+3

Nie wiem, dlaczego ta odpowiedź nie została otagowana - całkowicie rozwiązał mój problem polegający na niezawodnie umieszczaniu znaczków na stronie A4. Świetne wyjaśnienia! – galactica

+1

Tak, świetnie odpowiedział, nie ma pojęcia, dlaczego OP nie miał przyzwoitości do zaakceptowania. –