можно ли использовать Ghostscript для наложения текстового (факсимильного) заголовка на PDF и / или TIFF? - PullRequest
3 голосов
/ 16 января 2012

Я пишу приложение, которое отправляет факсом документ (много поддерживаемых типов), предоставленный конечным пользователем.Требование заключается в том, что конечный пользователь также может предоставить текст для использования в качестве части настраиваемого заголовка факса.

Я использовал Ghostscript для рендеринга PDF-файлов в формате TIFF, и до сих пор он работал отлично, но у меня естьеще предстоит найти простой способ наложения пользовательского заголовка вверху PDF.Я испробовал несколько рекомендаций:

... без удачи.

Я использовал ImageMagick, чтобы сделать это успешно с документами, отрисованными в TIFF черездругие инструменты, и я знаю, что ImageMagick может отображать PDF в TIFF самостоятельно.Тем не менее, я хочу придерживаться Ghostscript, потому что, по моему опыту, он работал лучше и отображал более четкие TIFF.

Возможно ли это с помощью Ghostscript и, возможно, сценария PS-помощника?

Редактировать:

Ghostscript (v9.04) не выдает никаких ошибок.Например:

gswin64c -dSAFER -dBATCH -dNOPAUSE -dPDFFitPage -sDEVICE=tiffg3 ^
    -sOutputFile=goofy.tif ^
    -c "/Courier findfont 12 scalefont setfont 50 765 moveto (header text) show" ^
    -f goofy.pdf

... создает TIFF исходного PDF, но без текста, который я пытался добавить.Если я добавлю showpage к однострочному постскриптуму, он (как и следовало ожидать) напечатает новую пустую страницу, за исключением заголовка, которая мне мало поможет.

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Я бы использовал другой инструмент командной строки в сочетании с Ghostscript для этой задачи.Этот инструмент pdftk.exe.Затем используйте трехэтапный подход:

  1. Задачей Ghostscript было бы создать (в противном случае пустую) страницу с текстом заголовка:
    gswin64c.exe ^
      -o header.pdf ^
      -sDEVICE=pdfwrite ^
      -c "/Courier findfont 12 scalefont setfont" ^
      -c "50 765 moveto (header text) show showpage"
    
  2. Задача pdftk была бычтобы наложить ( штамп или фон ) файл PDF с текстовым заголовком поверх исходного PDF:
     pdftk.exe goofy.pdf background header.pdf output goofy-with-header.pdf
    или
     pdftk.exe goofy.pdf stamp header.pdf output goofy-with-header.pdf
  3. Последний шаг заключается в использованииСнова Ghostscript, чтобы создать окончательный вывод TIFF:
    gswin64c.exe ^
       -dPDFFitPage ^
       -o goofy-with-header.tif ^
       -sDEVICE=tiffg3 ^
        goofy-with-header.pdf
0 голосов
/ 23 сентября 2013

Я только что попробовал ваш точно такой же подход с вашим точно таким же результатом. Затем я удалил -dSAFER из аргументов командной строки, и это работает как шарм.

0 голосов
/ 17 января 2012

Я вижу, что допирование это добавление того, что вам нужно в PDF, к самому файлу PDF - перед любым преобразованием - формат файла PDF разработан таким образом, что можно добавить дополнительную информацию в конец файла (даже информацию, котораяидет на предыдущих страницах).

К сожалению, я никогда не работал над этим - поэтому я могу точно сказать, что вам нужно сделать - возможно, есть какая-то библиотека для редактирования PDF на языке программирования, которая облегчила бы эту задачу- иначе вам придется создавать биты PDF самостоятельно.(Традиционные библиотеки, которые визуализируют PDF-файлы из некоторого входного формата, не подойдут, поскольку вам придется работать внутри структуры вашего существующего документа), - но, возможно, если взглянуть на спецификацию PDF, вы узнаете об этом подходе, и вы проверите, если онстоит: http://www.adobe.com/devnet/pdf/pdf_reference_archive.html

Другой подход заключается в работе с «другим концом» ваших файлов: макетирование текста в файлах TIFF после рендеринга с использованием библиотеки манипулирования изображениями.Конечно, это возможно только в том случае, если на страницах зарезервировано место для добавления информации.

Извините, что не можем предложить полное решение

...