在Adobe Acrobat XI中,编辑PDF表单时,有
下的功能工具 - >表格 - >更多表格选项 - >导入数据
工具 - >表格 - >更多表格选项 - >导出数据
导入数据采用XML文件并将数据导入PDF。 Export显然会根据输入到当前表单的数据创建XML文件。
我需要在.Net应用程序中模仿此功能。 (理想情况下基于网络)。
是否有任何第三方库(iTextSharp?)可以获取PDF文件和XML文件并输出已从XML导入数据的PDF?或者使用Acrobat本地库最适合自动执行此操作?
有没有人有使用第三方库或Adobe组件做类似事情的例子?
注意:我需要导入/导出的PDF表单不是在内部创建的。具体来说,我需要使用专利局创建的PDF表格。 (SB08a信息披露声明)
http://www.uspto.gov/patents/process/file/efs/guidance/updated_IDS.pdf
谢谢!
答案 0 :(得分:1)
我发现我可以从ITextSharp库中获得所需的行为。
/// <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;
}