C# XFA使用iTextSharp创建页面的多个实例

C# XFA使用iTextSharp创建页面的多个实例,c#,pdf,itextsharp,xfa,C#,Pdf,Itextsharp,Xfa,查看USCIS表单,您可以看到,在第9部分中有两个按钮,添加子项并转到继续页面,查看支持这些按钮的XML/JS,您将获得对应字段的此节点: <event activity="click" name="event__click"> <script contentType="application/x-javascript"> _KidsContPage.addInstance(1); xfa.form.recalculate(1);

查看USCIS表单,您可以看到,在第9部分中有两个按钮,添加子项并转到继续页面,查看支持这些按钮的XML/JS,您将获得对应字段的此节点:

<event activity="click" name="event__click">
    <script contentType="application/x-javascript">
        _KidsContPage.addInstance(1);
        xfa.form.recalculate(1);
        xfa.host.pageDown( );
    </script>
</event>
我也尝试过SetOpenAction

stamper.Writer.SetOpenAction(cloneAction);


    private string ClonePage(string formName)
    {
        return @"
if (xfa.host.name != 'XFAPresentationAgent') {
    $._" + formName + @".addInstance(1);
    if (xfa.host.version < 8) {
        xfa.form.recalculate(1);
    }
}";
    }

我知道我的ClonePage代码正在运行,因为我在前面测试它时看到了警报,问题出在javascript中,或者可能我需要在服务器上运行它,或者谁知道我需要做什么。我在LiveCycle中打开了XFA PDF,这就是它推出的JS,我一定是遗漏了一些小东西……它在LiveCycle中运行良好。请帮助。

实际上,您似乎希望以某种方式使itext执行与该事件相关的Javascript操作。这不会发生,因为itext不是Javascript解释器,更不用说AdobeReader中提供的带有特殊pdf和XFAAPI的解释器了。因此,您必须在执行脚本之前和之后比较xfa表单xml,并创建一个程序,该程序对使用itext.Ahh提取的xfa进行相同的更改。不,可能您误解了。我不需要iText来解释JavaScript,只需将它添加到XFA文档中即可,正如我个人在alert之类的东西上测试它时所做的那样。PDF仍将在Adobe Reader中呈现。。。所以你的评论根本不适用。啊,你的问题不是使用iTextSharp,或者其他方法,你如何创建这个页面的新实例,而是如何使用它在Acrobat Reader的下一个文档打开时创建它?对,没错
stamper.Writer.SetOpenAction(cloneAction);


    private string ClonePage(string formName)
    {
        return @"
if (xfa.host.name != 'XFAPresentationAgent') {
    $._" + formName + @".addInstance(1);
    if (xfa.host.version < 8) {
        xfa.form.recalculate(1);
    }
}";
    }