gpt4 book ai didi

javascript - 如何以编程方式修改 PDF 文件中的 JavaScript 事件?

转载 作者:行者123 更新时间:2023-11-28 05:28:42 24 4
gpt4 key购买 nike

我的 PDF 文件有一个附加到按钮的事件。我需要能够以编程方式修改该事件。我使用 iTextSharp 尝试了这种方式,但它没有更改新文件中的 javascript:

var pdfReader = new PdfReader(originalPdfDocumentPath);

pdfReader.RemoveUsageRights();

var pdfStamper = new PdfStamper(pdfReader, new FileStream(
newPdfDocumentPath, FileMode.Create, FileAccess.Write, FileShare.None),
'\0', true);

var originalXml = pdfReader.AcroFields.Xfa.DomDocument.InnerXml;

var newXml = originalXml.Replace(
"Table2.Row1.instanceManager.removeInstance(1)",
"Table2._Row1.removeInstance(this.parent.parent.index)");

// Unfortunately, this line does nothing.
pdfStamper.AcroFields.Xfa.DomDocument.InnerXml = newXml;
pdfStamper.Close();
pdfReader.Close();

任何帮助将不胜感激。

最佳答案

我发现,如果我不直接更改 XML,而是更改 DomDocument 并将 XFA 标记为已更改,那么它就可以工作。下面是更正后的代码:

var pdfReader = new PdfReader(originalPdfDocumentPath);

pdfReader.RemoveUsageRights();

var pdfStamper = new PdfStamper(pdfReader, new FileStream(newPdfDocumentPath, FileMode.Create, FileAccess.Write, FileShare.None), '\0', true);

var originalXml = pdfReader.AcroFields.Xfa.DomDocument.InnerXml;

var newXml = originalXml.Replace("Table2.Row1.instanceManager.removeInstance(1)", "Table2._Row1.removeInstance(this.parent.parent.index)");

/* New Code */
var doc = new XmlDocument();
doc.LoadXml(newXml);

pdfStamper.AcroFields.Xfa.DomDocument = doc;
pdfStamper.AcroFields.Xfa.Changed = true;
/* End of New Code */

pdfStamper.Close();

pdfReader.Close();

我应该注意到,即使此代码更改了 PDF 文件中的 JavaScript,它也会禁用 Adob​​e Acrobat Reader 中的扩展功能。您可以在这里找到更多相关信息:

http://developers.itextpdf.com/question/why-do-i-get-error-saying-use-extended-features-no-longer-available

"The problem is related to whether or not your document is Reader Enabled. Reader-enabling can only be done using Adobe software. It is a process that requires a digital signature using a private key from Adobe. When a valid signature is present, specific functionality (as defined in the usage rights when signing) is unlocked in Adobe Reader. You change the content of such a PDF, hence you break the signature."

关于javascript - 如何以编程方式修改 PDF 文件中的 JavaScript 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39903530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com