Файл штампа в формате 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 плюс pdftk, но для этого требуется как минимум 2 разных шага.

Насколько я знаю, вы не можете напрямую контролировать размещение штампа 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 с размером размером 320x50 пт. Это должно имитировать вашу «маленькую» марку, которую вы ищете для размещения.

Второе: создайте полностраничный (в моем случае, формата A4) PDF-файл, который можно будет применить на третьем шаге в качестве настоящей печати:

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 pts (то есть размер страницы ISO A4).
  3. Он применяет небольшую команду PostScript для смещения входного содержимого на 280 точек вправо и на 790 точек вверх (координаты PostScript и PDF начинают отсчет с нижнего левого угла).
  4. Он создает «A4-stamp.pdf» в качестве вывода.

По сути, моя исходная строка с марками небольшого размера теперь находится в правом верхнем углу страницы формата А4.

Третье: теперь вы можете применить этот новый «штамп» к исходному файлу 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
Не знаю, почему этот ответ не был помечен - он полностью решил мою проблему надежного размещения марок на странице формата А4. Отличные объяснения! - 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