Как вы можете указать описание вложения с помощью `pdftk`? - PullRequest
2 голосов
/ 26 августа 2011

В документации PDFTK не упоминается, как это сделать. Команда:

pdftk file.pdf attach_files attachDoc.pdf to_page 2 output -

прикрепит файл к странице 2 оригинального file.pdf и выведет результат в <stdout>.

attachDoc.pdf - имя файла файловой системы. Но я не могу указать какое-либо описание для этого, чтобы показать вложение в окончательном файле с соответствующей нотацией-описанием.

Это было бы особенно полезно, так как в операциях автоматической генерации вложения часто имеют временные имена, назначенные сервером, и необходимо описание

Есть ли способ сделать это?

1 Ответ

2 голосов
/ 24 мая 2015

Краткий ответ:

Вы не можете (в настоящее время) добавить описание файлового вложения при использовании pdftk.
(Однако, это должноне слишком сложно добавить эту функцию, поскольку для нее требуется только дополнительная запись ключа /Desc в словаре вложенных файлов ... Может быть, вам следует отправить запрос функции pdftk разработчикам?)

Более длинный ответ:

Вы можете достичь желаемого с помощью (очень свежей версии) Ghostscript. Но будьте осторожны, это довольно сложно!

Требуется использование специального расширения PostScript, определяющего оператор pdfmark .Этот оператор был создан для вставки расширенных функций в файл PDF, который нельзя использовать в самом PostScript.

Я продемонстрирую его с помощью отдельного файла, в котором для вставки последовательности используется ряд операций pdfmark.текстовый файл в PDF.Это содержимое текстового файла, mypdfmark-for-attachments.ps:

 [                                           /NamespacePush  pdfmark
 [ /_objdef {fstream} /type /stream          /OBJ            pdfmark
 [ {fstream} << /Type /EmbeddedFile >>       /PUT            pdfmark

 [ {fstream} (I only simulate text file content here...)
                                             /PUT            pdfmark
 [ /Name <feff 0044 005a 005a 005a 005a 005a>
   /FS<<
      /Desc  (dEsCrIpTiOn)
      /Type  /Filespec
      /F     (my.txt)
      /EF    <<
             /F {fstream}
             >>
      >>                                     /EMBED          pdfmark
 [ {fstream}                                 /CLOSE          pdfmark
 [                                           /NamespacePop   pdfmark

Как видите, ключ /Desc содержит текст моего описания dEsCrIpTiOn.

Теперь выполните эту команду Ghostscript:

gs -o emb.pdf -sDEVICE=pdfwrite mypdfmark-for-attachments.ps -f some.pdf 

Вот снимок экрана итогового файла PDF, показанного Acrobat:

Acrobat screenshot

...