iText 7(.NET)中对应iText 5的stamper.AddJavaScript函数的等效方法是什么?
在iText 7(.NET)中添加文档级JavaScript的方法
嘿,我刚好对这个转换很熟悉!在iText 5里用Stamper.AddJavaScript()实现的文档级JavaScript功能,到iText 7(.NET)里有直接的等效方案,只是API的结构做了调整,核心逻辑还是一致的。
两种常见场景的实现
1. 修改现有PDF文档(对应iText 5的PdfStamper场景)
你需要先加载目标PDF,然后通过文档的**根目录对象(PdfCatalog)**来添加JavaScript,代码示例如下:
using iText.Kernel.Pdf; // 打开现有PDF并准备输出 using (PdfDocument pdfDoc = new PdfDocument(new PdfReader("your-input.pdf"), new PdfWriter("your-output.pdf"))) { // 获取PDF的根目录 PdfCatalog catalog = pdfDoc.GetCatalog(); // 添加普通文档级JS(文档打开时触发) catalog.AddJavaScript("app.alert('这是iText 7添加的文档级JavaScript!');"); // 如果需要添加可被其他动作调用的命名脚本,可以用AddNamedJavaScript catalog.AddNamedJavaScript("customGreeting", "function showGreeting() { app.alert('Hello from named JS!'); }"); }
2. 创建新PDF文档时添加
如果是从头创建PDF,同样通过PdfCatalog来添加,步骤和修改现有文档类似:
using iText.Kernel.Pdf; using (PdfDocument pdfDoc = new PdfDocument(new PdfWriter("new-document.pdf"))) { PdfCatalog catalog = pdfDoc.GetCatalog(); // 添加文档打开时触发的JS catalog.AddJavaScript("app.alert('欢迎查看新生成的PDF!');"); // 这里可以继续添加页面、内容等其他PDF元素 }
关键说明
在iText 7中,文档级JavaScript是存储在PDF的根目录(Catalog)中的,这和iText 5的底层实现逻辑一致,只是API从PdfStamper转移到了PdfCatalog对象上,这样的设计更贴合PDF的结构规范。
内容的提问来源于stack exchange,提问作者T Sabourin




