Как программно вставлять JavaScript в файлы PDF?

Как программно вставлять JavaScript в файлы PDF?

Можно ли это сделать без Adobe Professional?


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

Я знаю, что это можно сделать с помощью кода JavaScript, встроенного в документ.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
0
9 028
3

Ответы 3

Если вы разрабатываете на Java, посмотрите iText: http://www.lowagie.com/iText/ Я думаю, это поддерживает то, что вы ищете.

Также есть несколько версий .Net: http://www.ujihara.jp/iTextdotNET/en/

Вот простой пример: itextdocs.lowagie.com/tutorial/objects/anchors/index.php Посмотрите на раздел JavaScript.

Anson Smith 17.10.2008 00:44

Я изучил PDF Технические характеристики.

Оказывается, формат файла PDF не так уж и сложен.

У него есть хорошая функция, которая позволяет изменять документ, просто добавляя новое содержимое в конец файла.

Если вы пытаетесь сделать то же самое ... не бойтесь! пойдите и посмотрите спецификации.

Итак, вы просто добавляете новые и обновленные потоки объектов, за которыми следуют обновленная таблица перекрестных ссылок (xref) и трейлер? Похоже, вам нужно иметь возможность анализировать существующие потоки объектов и вычислять байтовые смещения.

Daniel Ballinger 29.03.2011 02:14

iText (и iText_Sharp_) вполне способны добавлять JS в существующий PDF ... действия на странице, ссылки, скрипт уровня документа, что угодно.

JavaDoc можно найти здесь.

Это было написано с учетом Java, но код C# выглядел бы почти идентичным (если не совсем таким же, с исключенной обработкой исключений, подобной этой).

PdfReader myReader = new PdfReader( myFilePath ); // throws IOException
PdfStamper myStamper = new PdfStamper( myReader, new FileOutputStream(outPath) ); // throws IOE, DocumentException

// add a document script
myStamper.addJavaScript( myScriptString );

// add a page-open script, 1 is the first page, not zero0
PdfAction jsAction = PdfAction.javaScript( someScriptString );
myStamper.setPageAction( PdfWriter.PAGE_OPEN, jsAction, myStamper.getWriter(), pageNumber ); // throws PdfException (for bad first param)

PdfFormField button = PdfFormField.createButton(myWriter, PdfFormField.FF_PUSHBUTTON);
button.setWidget( myRectangle, PdfAnnotation.HIGHLIGHT_INVERT );

// the important part, adding jsAction
jsAction = PdfAction.javaScript( buttonScriptString );
button.setAdditionalActions( PdfAnnotation.AA_DOWN, jsAction ); // mouse down

myStamper.addAnnotation( pageNum, button );

myStamper.close(); // write everything out, throws DocumentException, IOE

Другие вопросы по теме