PDF файл с печат с контрол за позицията на файла с печат

Някой знае ли за щамповането на PDF файл в PDF файл, както и за контролите за позициониране на печат на PDF файл?

Имам файл orginal.pdf и logo.pdf. Искам да подпечатам logo.pdf файл във файл orginal.pdf в горния ляв ъгъл на файл original.pdf. Как може да се направи с Ghostscript или pdftk?


person een qren    schedule 12.12.2011    source източник


Отговори (1)


Може да се направи с Ghostscript plus pdftk, но изисква поне 2 различни стъпки.

AFAIK, не можете директно да контролирате поставянето на печата на pdftk. По подразбиране той поставя печата в центъра на страницата и в същото време извършва операция „мащабиране до побиране“.

Така че първо трябва да поправите печата си, така че първо да бъде поставен на празна страница, точно на позицията, която искате. Това можете да постигнете с помощта на Ghostscript в първата стъпка. След това във втора стъпка използвайте pdftk, за да обедините двата файла.

Нека използваме пример.

Първо: Създайте „stamp-small.pdf“. (Вече имате своя; имам нужда от един, за да демонстрирам принципа.)

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"

Този пример беше за Linux или Mac OS X. В Windows бихте го променили по следния начин:

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"

(Можете също да поставите всичко в един ред, но след това да пропуснете знаците за продължение на реда за съответната ОС.) Тази първа команда предава серия от прости PostScript изрази на командния ред на Ghostscript и му казва да създаде малка PDF страница с размер от 320х50 т. Това трябва да симулира вашия „малък“ печат, за който търсите място.

Второ: Създайте PDF файл на цяла страница (в моя случай с размер A4), който може да бъде приложен в третата стъпка като истински печат:

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

В Windows:

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

Тази команда постигна няколко неща:

  1. Той взе първоначално създадения „stamp-small.pdf“ като вход.
  2. Използваше платно с размери 595x842 точки (това е размерът на страницата ISO A4).
  3. Той прилага малка команда PostScript, за да измести въведеното съдържание с 280 точки надясно и 790 точки нагоре (PostScript и PDF координатите започват да се броят от долния ляв ъгъл).
  4. Той създава „A4-stamp.pdf“ като изход.

Ефективно моят оригинален низ с печат с малък размер вече е в горния десен ъгъл на страница A4.

Трето: Сега можете да приложите този нов „печат“ към вашия оригинален PDF файл с помощта на pdftk:

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

или, за да маркирате всички страници на многостраничен оригинален PDF:

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

Този пример трябва да ви даде достатъчно представа за това как да разработите подобна процедура за вашия собствен logo.pdf, както аз направих за моя stamp-small.pdf. (Направих го за горния десен ъгъл, вие искате вашето за горния ляв ъгъл.)

person Kurt Pfeifle    schedule 19.12.2011
comment
Благодаря за отговора преди. Този проблем е направен със скрипт PHP използва FPDI. - person een qren; 23.12.2011
comment
Не знам защо този отговор не беше маркиран - той напълно реши проблема ми как да поставя печати надеждно на страница с формат A4. Страхотни обяснения! - person galactica; 19.01.2012
comment
Да, чудесен отговор, нямам представа защо ОП не е имал благоприличието да приеме. - person Jérémie; 31.10.2014
comment
Това е страхотен отговор. - person BenjaminCorey; 26.03.2015
comment
Когато вече имате вашия печат като PDF, но не е позициониран правилно, използването на pdfjam за създаване на PDF с наслагване може да бъде малко по-лесно за разбиране. Има опции като --scale и --offset. Поставих PNG в моя PDF с помощта на convert, pdfjam и pdftk stamp. - person Joost; 10.04.2015