应用场景:将用户所填数据填入pdf模板中并生成pdf
使用word制作模板,然后转为pdf;使用【万兴PDF】工具在需要录入的地方添加文本域(该工具可以自动在录入空白处生成文本域,非常nice)。
目前实验通了普通文本框,复选框、Table(列表文本域)。辅助类代码如下:
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;namespace PDFTest
{
public class PdfHelp
{private string fontname = $@"D:\Test\simsun.ttc,0";//字体宋体
//string fontname = $@"D:\Test\simhei.ttf";//黑体
/// <summary>
/// 根据模板生成pdf
/// </summary>
/// <param name="pdfTemplate">模板路径</param>
/// <param name="tempFilePath">输出路劲</param>
/// <param name="parameters">文本域及值 key为文本域名称 value为需要填入的值</param>
public bool CreatePdfByModule(string pdfTemplate, string tempFilePath, Dictionary<string, object> parameters)
{
if (!File.Exists(pdfTemplate))
{
return false;
}
PdfReader pdfReader = null;
PdfStamper stamp = null;
MemoryStream stream = null;
try
{
//获取中文字体
BaseFont baseFont = BaseFont.CreateFont(fontname, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//读取模板文件
pdfReader = new PdfReader(pdfTemplate);
//创建文件流用来保存填充模板后的文件
stream = new MemoryStream();
stamp = new PdfStamper(pdfReader, stream);
AcroFields form = stamp.AcroFields;
//表单文本框是否锁定
stamp.FormFlattening = true;
//填充表单,para为表单的一个(属性-值)字典
foreach (KeyValuePair<string, object> parameter in parameters)