首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动执行Adobe PDF表单导入/导出数据功能

问自动执行Adobe PDF表单导入/导出数据功能
EN

Stack Overflow用户
提问于 2013-12-08 02:17:35
回答 1查看 2.7K关注 0票数 1

在Adobe Acrobat XI中,在编辑PDF表单时,有以下功能

工具-> Forms ->更多表单选项->导入数据

工具-> Forms ->更多表单选项->导出数据

导入数据采用XML文件并将数据导入到PDF中。导出显然会从输入到当前表单的数据创建一个XML文件。

我需要在.Net应用程序中模拟此功能。(理想情况下基于web )。

是否有任何第三方库(iTextSharp?)它可以获取PDF文件和XML文件,并输出从XML导入数据的PDF?或者使用Acrobat本机库是自动化的最好方法?

有没有人有使用第三方库或Adobe组件做类似事情的例子?

注意:我需要导入/导出的PDF表单不是在内部创建的。具体地说,我需要用一个由专利局创建的PDF表单来做这件事。(SB08a信息披露声明)

http://www.uspto.gov/patents/process/file/efs/guidance/updated_IDS.pdf

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-09 06:57:23

我发现我可以从ITextSharp库中获得所需的行为。

代码语言:javascript
复制
    /// <summary>
    /// Exports XFA data from a PDF File.
    /// </summary>
    /// <param name="populatedPDFForm">a readable stream of the PDF with a populated form</param>
    /// <returns>A stream containing the exported XML form data</returns>
    public static System.IO.MemoryStream Export(System.IO.Stream populatedPDFForm)
    {
        System.IO.MemoryStream outputStream = new System.IO.MemoryStream();
        using (iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(populatedPDFForm))
        {
            var settings = new System.Xml.XmlWriterSettings { Indent = true };
            using (var writer = System.Xml.XmlWriter.Create(outputStream, settings))
            {
                reader.AcroFields.Xfa.DatasetsNode.WriteTo(writer);
            }
        }
        return outputStream;
    }

    /// <summary>
    /// Imports XFA Data into a new PDF file.
    /// </summary>
    /// <param name="pdfTemplate">A PDF File with an unpopulated form.</param>
    /// <param name="xmlFormData">XFA form data in XML format.</param>
    /// <returns>a memorystream containing the new PDF file.</returns>
    public static System.IO.MemoryStream Import(System.IO.Stream pdfTemplate, System.IO.Stream xmlFormData)
    {
        System.IO.MemoryStream outputSteam = new System.IO.MemoryStream();
        using (iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(pdfTemplate))
        {
            using (iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outputSteam))
            {
                stamper.Writer.CloseStream = false;
                stamper.AcroFields.Xfa.FillXfaForm(xmlFormData);
            }
        }
        return outputSteam;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20444815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档