Как программно внедрить JavaScript в PDF-файлы? - PullRequest
7 голосов
/ 16 октября 2008

Как программно внедрить JavaScript в PDF-файлы?

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


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

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

Ответы [ 3 ]

3 голосов
/ 16 октября 2008

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

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

2 голосов
/ 19 октября 2010

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
1 голос
/ 15 ноября 2008

Я закончил изучение Спецификации PDF .

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

Имеет приятную функцию, которая позволяет изменять документ, просто добавляя новый контент в конец файла.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...