我假设我需要展平 XFA 表单才能在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示。当我现在处理它时,我收到一条通用消息“请稍候......如果最终没有替换此消息......”。
寻找一些示例 iTextSharp 代码来执行此操作。
我假设我需要展平 XFA 表单才能在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示。当我现在处理它时,我收到一条通用消息“请稍候......如果最终没有替换此消息......”。
寻找一些示例 iTextSharp 代码来执行此操作。
您没有插入代码示例来显示您当前如何展平 XFA 表单。我假设您的代码如下所示:
var reader = new PdfReader(existingFileStream);
var stamper = new PdfStamper(reader, newFileStream);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys) {
form.SetField(fieldKey, "X");
}
stamper.FormFlattening = true;
stamper.Close();
reader.Close();
此代码在尝试基于 AcroForm 技术展平表单时可以使用,但它不能用于基于 XML 表单架构 (XFA) 的表单!
动态 XFA 表单通常包含一个单页 PDF(带有“请稍候...”消息的那个),它显示在不理解 XFA 的查看器中。文档的实际内容存储为 XML 文件。
将 XFA 表单展平为普通 PDF 的过程需要您解析 XML 并将 XML 语法转换为 PDF 语法。这可以使用 iText 的 XFA Worker 来完成:http: //itextpdf.com/product/xfa_worker
假设您在内存ms
(
Document document = new Document();
PdfWriter writer =
PdfWriter.GetInstance(document, new FileStream(dest, FileMode.Create));
XFAFlattener xfaf = new XFAFlattener(document, writer);
ms.Position = 0;
xfaf.Flatten(new PdfReader(ms));
document.Close();
您可以下载包含 XFA Worker 的 DLL 的 zip 文件以及此处的示例:http: //itextsupport.com/download/xfa-net.zip
然而:由于太多的开发者在商业环境中使用 AGPL 版本的 iTextSharp 而没有购买商业许可证,我们决定不开源 XFA Worker。您可以获得试用期的许可证密钥,但它是建立在 iTextSharp 商业版本之上的商业产品。如果您从 iText Software 购买许可证,XFA Worker 只能在生产中使用。对于 iTextSharp 也是如此,但对于 iTextSharp,如果您不购买商业许可证,则没有阻止使用的许可证密钥。对于 iTextSharp,我们依靠诚实。对于 XFA Worker,我们采取了一些预防措施 ;-)