本文适用于导出pdf简历、合同之类业务,需先用pdf工具制作好pdf模版
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Common
{
public class PDFHelper
{
///使用示例:
///简单模版文件可以在线生成(http://www.pdfescape.com/windows/)使用Form Field创建需要填充的内容的控件
///var template_url = @"C:\Users\Song\Desktop\tmpplate.pdf";
///var save_pdf_url = @"C:\Users\Song\Desktop\new.pdf";
///var dic = PDFHelper.ReadForm(template_url);
///dic["name"] = "张三";
///dic["id_card"] = "111111111111";
///PDFHelper.FillForm(template_url, save_pdf_url, dic);
///
/// 读取pdf模版中的标签
///
/// pdf模版文件路径
///
public static Dictionary
ReadForm(string pdfTemplate)
{
Dictionary
dic = new Dictionary
();
PdfReader pdfReader = null;
try
{
pdfReader = new PdfReader(pdfTemplate);
AcroFields pdfFormFields = pdfReader.AcroFields;
foreach (KeyValuePair
de in pdfFormFields.Fields)
{
dic.Add(de.Key, "");
}
}
catch (Exception ex)
{
LogHelper.Error(ex.Message);
}
finally
{
if (pdfReader != null)
{
pdfReader.Close();
}
}
return dic;
}
///
/// 向pdf模版填充内容,并生成新的文件 ///
///
模版路径
///
生成文件保存路径
///
标签字典(即模版中需要填充的控件列表)
public static void FillForm(string pdfTemplate, string newFile, Dictionary
dic) { PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(pdfTemplate); pdfStamper = new PdfStamper(pdfReader, new FileStream( newFile, FileMode.Create)); AcroFields pdfFormFields = pdfStamper.AcroFields; //设置支持中文字体 BaseFont baseFont = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); pdfFormFields.AddSubstitutionFont(baseFont); foreach (KeyValuePair
de in dic) { pdfFormFields.SetField(de.Key, de.Value); } pdfStamper.FormFlattening = true; } catch (Exception ex) { LogHelper.Error(ex.Message); } finally { if (pdfStamper != null) { pdfStamper.Close(); } if (pdfReader != null) { pdfReader.Close(); } } } } }
发布过程中遇到了win2008服务器上字体文件不存在的问题,特字体文件上传备份下
http://download.csdn.net/detail/shujudeliu/9925117
版权声明:本文为shujudeliu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。