gpt4 book ai didi

c# - 使用 C# iText 7 拼合 XFA PDF

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:24 26 4
gpt4 key购买 nike

是否可以使用 iText 7 来展平 XFA PDF?我只看到有关它的 Java 文档 ( http://developers.itextpdf.com/content/itext-7-examples/itext-7-form-examples/flatten-xfa-using-pdfxfa )。

看起来您可以使用 iTextSharp,但是要这样做。

我相信它不是 AcroForm PDF,因为做的事情类似于这个答案 How to flatten pdf with Itext in c#?只是创建了一个无法正常打开的 PDF。

最佳答案

看起来您必须使用 iTextSharp 而不是 iText7。查看 NuGet 版本,看起来 iTextSharp 本质上是 iText5 .NET 版本,就像上面评论中提到的 Bruno 一样,XFA 内容根本没有移植到 iText7 for .NET。

混淆源于在 NuGet 中同时拥有 iText7 和 iTextSharp 版本,而且试用页面没有说明 XFA worker 不适用于 .NET 版本的 iText7(还没有?)

我做了以下工作来完成我至少需要做的试验:

  1. 在这里索取试用版:http://demo.itextsupport.com/newslicense/

  2. 您将通过电子邮件收到一个 xml 许可证 key ,您现在可以将它放在桌面上。

  3. 在 Visual Studio 中创建一个新的控制台应用程序

  4. 打开项目管理器控制台并输入以下内容并按 ENTER(这也会安装其他依赖项)

    Install-Package itextsharp.xfaworker
  5. 使用以下代码:

static void Main(string[] args)
{
ValidateLicense();
var sourcePdfPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "<your_xfa_pdf_file>");
var destinationPdfPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "output.pdf");
FlattenPDF(sourcePdfPath, destinationPdfPath);
}

private static void ValidateLicense()
{
var licenseFileLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "itextkey.xml");
iTextSharp.license.LicenseKey.LoadLicenseFile(licenseFileLocation);
}

private static void FlattenPDF(string sourcePdfPath, string destinationPdfPath)
{
using (var sourcePdfStream = File.OpenRead(sourcePdfPath))
{
var document = new iTextSharp.text.Document();
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(destinationPdfPath, FileMode.Create));
var xfaf = new iTextSharp.tool.xml.xtra.xfa.XFAFlattener(document, writer);
sourcePdfStream.Position = 0;
xfaf.Flatten(new iTextSharp.text.pdf.PdfReader(sourcePdfStream));
document.Close();
}
}

试用版会在生成的 PDF 上加一个巨大的水印,但至少您可以让它正常工作,看看完整许可证应该如何工作。

关于c# - 使用 C# iText 7 拼合 XFA PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354776/

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