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

时间:2008-10-16 19:42:59

标签: javascript pdf

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

可以在没有Adobe Professional的情况下完成吗?


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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

iText(和iText_Sharp_)非常能够将JS添加到现有的PDF ...页面操作,链接,文档级脚本,您可以为其命名。

The JavaDoc can be found here

这是用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

答案 2 :(得分:1)

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

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

它有一个很好的功能,只需在文件末尾添加新内容即可修改文档。

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