java下载xml并合并单元格_使用xml数据合并/填充pdf表单文件

本文介绍如何使用Java结合ITextSharp库将XML数据填充到PDF表单中。通过控制PDF表单开发和格式化XML数据,实现XML与PDF的高效合并。示例代码展示了具体的实现步骤,包括读取PDF模板、映射XML数据到PDF控件以及生成合并后的PDF文件。
摘要由CSDN通过智能技术生成

如果可能的话,我建议使用第4种方法,因为它会更清洁 . 您将使用专门为您要求做的定制的解决方案,但如果您没有可用于此类解决方案的资源,我建议您使用第一个选项 .

第一个选项是我最近潜入的选项 . 我发现它实施起来相对轻松 .

如果以下情况适用,则可以选择1:

您可以控制PDF表单的开发 .

您可以控制格式化xml数据

您可以使用未压缩(fastweb = false)PDF文件

实施示例:

使用Adobe Acrobat生成PDF表单 . 提示:生成表单时使用Adobe Native Fonts . 对于您添加的不是本机字体的每个控件,它将导入所使用的字体并在未压缩文件时使文件膨胀,据我所知,ITextSharp当前不生成压缩的PDF .

使用ITextSharp库将XML数据与PDF表单组合以生成填充的文档 . 提示:要从xml手动填充PDF表单,您必须将xml值映射到PDF表单中的控件名称,并按页面进行匹配,如下例所示 .

using (MemoryStream stream = GeneratePDF(m_FormsPath, oXmlData))

{

byte[] bytes = stream.ToArray();

Response.ContentType = "application/pdf";

Response.BinaryWrite(bytes);

Response.End();

}

//

// This method combines pdf forms with xml data

//

// pdf form file path

// xml dataset

// memory stream containing the pdf data

private MemoryStream GeneratePDF(string m_FormName, XmlDocument oData)

{

PdfReader pdfTemplate;

PdfStamper stamper;

PdfReader tempPDF;

Document doc;

MemoryStream msTemp;

PdfWriter pCopy;

MemoryStream msOutput = new MemoryStream();

pdfTemplate = new PdfReader(m_FormName);

doc = new Document();

pCopy = new PdfCopy(doc, msOutput);

pCopy.AddViewerPreference(PdfName.PICKTRAYBYPDFSIZE, new PdfBoolean(true));

pCopy.AddViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);

doc.Open();

for (int i = 1; i < pdfTemplate.NumberOfPages + 1; i++)

{

msTemp = new MemoryStream();

pdfTemplate = new PdfReader(m_FormName);

stamper = new PdfStamper(pdfTemplate, msTemp);

// map xml values to pdf form controls (element name = control name)

foreach (XmlElement oElem in oData.SelectNodes("/form/page" + i + "/*"))

{

stamper.AcroFields.SetField(oElem.Name, oElem.InnerText);

}

stamper.FormFlattening = true;

stamper.Close();

tempPDF = new PdfReader(msTemp.ToArray());

((PdfCopy)pCopy).AddPage(pCopy.GetImportedPage(tempPDF, i));

pCopy.FreeReader(tempPDF);

}

doc.Close();

return msOutput;

}

保存文件或将文件发布到ASP.Net页面的响应中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值