7

如何以编程方式在 PDF 文件中注入 JavaScript?

可以在没有 Adob​​e Professional 的情况下完成吗?


我的目标是:我想在打开 PDF 时立即显示打印对话框。

我知道这可以通过嵌入在文档中的 JavaScript 代码来完成。

4

3 回答 3

4

如果您使用 Java 进行开发,请查看 iText:http ://www.lowagie.com/iText/ 我认为它支持您正在寻找的内容。

还有一些.Net版本:http ://www.ujihara.jp/iTextdotNET/en/

于 2008-10-16T19:46:55.370 回答
3

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
于 2010-10-18T22:28:00.487 回答
1

我已经完成了PDF Specifications的研究。

事实证明,PDF 文件格式并不难。

它有一个很好的功能,可以通过在文件末尾附加新内容来修改文档。

如果你想做同样的事情......不要害怕!去看看规格。

于 2008-11-15T15:05:05.253 回答