asp.net – 使用xml数据合并/填充pdf表单文件
假设我在网站上有一个pdf表单文件,由用户填写并提交给服务器.在服务器端(Asp.Net),我想将我以xml格式接收的数据与填充的空pdf表单合并并保存.
我发现有几种可能的方法: >使用adobe acrobat创建的pdf表单并用itextsharp填充. 由于我没有这种任务的经验,你能建议哪个选项会更好/更容易并提供一些额外的提示吗? 先感谢您. 解决方法
如果可能的话,我建议使用第4种方法,因为它会更清洁.您将使用专门为您要求做的定制的解决方案,但如果您没有可用于此类解决方案的资源,我建议您使用第一个选项.
第一个选项是我最近潜入的选项.我发现它实施起来相对轻松. 如果以下情况适用,则可以选择1: >您可以控制PDF表单的开发. 实施示例: >使用Adobe Acrobat生成PDF表单.提示:生成表单时使用Adobe Native Fonts.对于您添加的不是本机字体的每个控件,它将导入所使用的字体并在未压缩文件时使文件膨胀,据我所知,ITextSharp当前不生成压缩的PDF. using (MemoryStream stream = GeneratePDF(m_FormsPath,oXmlData)) { byte[] bytes = stream.ToArray(); Response.ContentType = "application/pdf"; Response.BinaryWrite(bytes); Response.End(); } // <summary> // This method combines pdf forms with xml data // </summary> // <param name="m_FormName">pdf form file path</param> // <param name="oData">xml dataset</param> // <returns>memory stream containing the pdf data</returns> 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页面的响应中 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 异步加载Facebook Javascript SDK
- ASP.NET NUnit:使用.NET 4的HttpModule的良好单
- ASP.NET网站中的预定作业,无需购买专用服务器
- 在Asp.NET中黑客会话变量
- asp.net-mvc – 更改数据注释中的验证消息
- asp.net – 衡量Web请求和响应的大小
- ASP.NET – 如果不包括CSS,如何包含CSS?
- ASP.NET ReportViewer Google Chrome CPU使用情况
- asp.net-mvc – ASP.NET MVC&Windsor.Castle
- 身份验证 – 错误“Membership.Provider”属性必