Поддерживает ли Ghostscript вставку JavaScript в существующий PDF? - PullRequest
1 голос
/ 24 сентября 2019

Я не нахожу ничего связанного с документацией: https://www.ghostscript.com/doc/current/Use.htm

Я нашел несколько похожий пример для вставки водяных знаков на каждую страницу, поэтому кажется, что это возможно.

Возможно ли в Ghostscript добавлять водяные знаки на каждую страницу в PDF

Однако из этого примера не ясно, как вставить Javascript.

Ответы [ 2 ]

3 голосов
/ 24 сентября 2019

Устройство Ghostscript pdfwrite поддерживает многие операции pdfmark PostScript (но не все).Нет, документации по поддерживаемым нет, но в целом все, кроме логической структуры.

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

[
/Subtype /Widget
/Rect [216 647 361 684]
/F 4
/T (SL Text)
/FT /Tx
/DA (/Helv 14 Tf 0 0 1 rg)
/V (5)
/AA <<
  /K <<
    /S /JavaScript
    /JS (AFNumber_Keystroke\(2, 0, 0, 0, "$", true\);)
  >>
  /F <<
    /S /JavaScript
    /JS (AFNumber_Format\(2, 0, 0, 0, "$", true\);)
  >>
>> /ANN pdfmark

showpage

Это рисует голубой прямоугольник, когда вы наводите курсор мышион рисует черную рамку, при щелчке по нему отображается значение 5. Замените 5 числовым значением и нажмите клавишу возврата, и оно станет $ value.00 на синем фоне.Вид выглядит справа.

Обратите внимание, что пример, на который вы ссылались выше, вам не поможет, это связано с чистым PostScript.Чтобы добавить аннотацию, подобную этой, вам необходимо:

  1. Использовать устройство pdfwrite Ghostscript
  2. создать командную строку, в которой вы сначала обработаете существующий файл PDF
  3. В командной строке после обработки существующего файла PDF выполните PostScript (используя pdfmark, как указано выше, но не showpage, только раздел pdfmark), чтобы определить аннотацию.Для этого вам понадобятся ключи -c (ввести PostScript) и -f (конец PostScript).
1 голос
/ 24 сентября 2019

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

[ /_objdef {MyAlert} /type /dict /OBJ pdfmark
[ {MyAlert} << /JavaScript << /Names [ (MyAlertCode) << /S /JavaScript
/JS (app.alert\("Hello world 1."\);app.alert\("Hello world 2."\);) >> ]
>> >>
/PUT pdfmark
[ {Catalog} << /Names {MyAlert} >> /PUT pdfmark

Полные шаги для воспроизведения будут:

  1. Убедитесь, что на вашем компьютере установлен Ghostscript (команда gs)
  2. Поместите исходный PDF-файл в папку рядом с файлом postscript (.ps), который содержит код извыше.
  3. cd в эту папку
  4. Выполнить: gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=newpdf.pdf myps.ps mypdf.pdf (очевидно, замените myps.ps и mypdf.pdf фактическими именами файлов).
  5. Открыть newpdf.pdf чтобы убедиться, что это сработало!

Другие советы:

  • Acrobat не использует точно такой же синтаксис, который вы могли бы использовать дляв традиционной веб-разработке (следовательно, app.alert в примере, а не в традиционной alert().) Не просто предполагайте, что функция, которую вы пытаетесь использовать, существует.
  • Вам понадобится использовать обратную косую черту дляэкранировать скобки в вашем JavaScript (например, app.alert\("Hello World"\)
  • Вы можете установить консоль Javascript на Acrobat , чтобы помочь с отладкой JS

Ресурсы:

...