0

理想情况下,我正在尝试使用 iTextSharp 触发 PDF 中的事件。如果做不到这一点,我想知道我是否可以触发一个功能。

基本上,我只是想通过 javascript 获取文档的句柄。

这适用于PDF

(使用 LiveCycle):

eApp.Page1.FormPurpose_PolicyNumber::click - 

(JavaScript,客户端)

this.rawValue = "hello";

eApp在这种情况下,从 C# 中我无法处理文档。

var reader = new PdfReader(pdfFileStream);
var writer = new PdfStamper(reader, outputStream);

这工作:(应用程序对象)

PdfAction js =
    PdfAction.JavaScript(
        "app.alert('hello');",
        writer.Writer);

writer.Writer.AddJavaScript(js);

这不会:

PdfAction js =
    PdfAction.JavaScript(
        "eApp.Page1.FormPurpose_PolicyNumber.execEvent('click');",
        writer.Writer);

writer.Writer.AddJavaScript(js);

也不起作用:

PdfAction js =
    PdfAction.JavaScript(
        "eApp.Page1.FormPurpose_PolicyNumber.rawValue= 'hello'",
        writer.Writer);

writer.Writer.AddJavaScript(js);

我一直在寻找高低的答案,但一直找不到,是的,有类似的问题,但要么没有答案,要么与我正在做的非常不同。

4

2 回答 2

2

根据您的最新评论 - 那行不通。iTextSharp 只会将一些脚本添加到文档中。该脚本将在某些客户端应用程序中启动,例如 Adob​​e Reader。它不会在您的文档中执行任何脚本。假设在您的情况下,使用 c# 对文档执行您想要的操作会更容易,而不是在将表单展平设置为 true 的情况下保存它。

于 2012-08-22T17:33:09.397 回答
0

在我的情况下,工作解决方案是:

PdfReader reader = new PdfReader(this.pathToPDFTemplate);
...
PdfStamper stamper = new PdfStamper(reader, stream);
...
PdfAction action = PdfAction.JavaScript("this.xfa.form.form1.DesignArea.sfPart3.sfPart3_5.ck2.presence = 'hidden';", stamper.Writer);
stamper.Writer.SetAdditionalAction(PdfWriter.WILL_PRINT, action);
...

诀窍是使用this.xfa.form。在您前往该领域的道路之前。

于 2018-03-01T10:51:11.400 回答