You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动