上篇说到itextsharp生成pdf有两中方式,而pdf模板方式需要先制作pdf模板,下面就先说说如何制作pdf模板。
1、首先需要安装Adobe Acrobat(我用的是Adobe Acrobat 9 Pro这个版本),Adobe Acrobat软件能把word,execl文档转为pdf文件
如果你觉得用Adobe Acrobat 9 Pro把word等文件转为pdf不知道如何操作,那么可以doPDF这个把word等文件直接打印为pdf保存的软件,下载地址:http://www.duote.com/soft/1329.html(具体的使用这里不多讲,百度)
2、其他文档转为pdf后,就需要添加如下图中方框中的文本域(用于使用代码往pdf文档中添加数据)
菜单栏-----工具-----高级编辑-----显示高级编辑工具栏 点击后就会出现如下图中那个高级编辑窗口
鼠标点击Ok那个图标后,移动到文件中就会出现如图的文本域,根据自己爱好命名就可以了,制作完文本域后保存就可以了。(双击文本域可以设置该文本域的属性)
下图为制作完成的pdf文件模板(仅作示例参考)
3、测试数据
制作完模板后,就需要在代码中写些测试数据,看看能不能保存在文本域中。代码如下:
/// <summary> /// 初始化测试数据 /// </summary> /// <returns></returns> public Dictionary<string, string> ParamerInitialize() { Dictionary<string, string> FieldValues = new Dictionary<string, string>(); FieldValues.Add("DBZJLX", "001"); FieldValues.Add("YY", "2013"); FieldValues.Add("MM", "09"); FieldValues.Add("DD", "02"); FieldValues.Add("SKDWMC", "名称"); FieldValues.Add("JKDWMC", "名称"); FieldValues.Add("SKDWKHYH", "工商银行"); FieldValues.Add("JKDWKHYH", “工商银行"); FieldValues.Add("SKDWZH", "0987655"); FieldValues.Add("JKDWZH", "0682334"); FieldValues.Add("Text11", "12345566"); FieldValues.Add("Text12", "钻石"); FieldValues.Add("Text13", "10"); FieldValues.Add("Text15", "克"); FieldValues.Add("Text16", "11"); FieldValues.Add("Text17", "3%"); FieldValues.Add("Text18", "15"); FieldValues.Add("Text19", "2013/02/23"); FieldValues.Add("HJJEDX", "壹万贰"); FieldValues.Add("HJJEXX", "12000"); FieldValues.Add("RQ", "2013/02/22"); FieldValues.Add("BZ", "备注"); return FieldValues; }
测试数据如上,不过Dictionary中的键一定要同pdf中添加的文本域名称一样,才能把数据添加到pdf中
4、代码测试
根据ASP.NET,flexpaper,SWFTools 实现简单的PDF显示(三)中的 public static byte[] CreatePDf(string TempFileName, Dictionary<string, string> FieldValues)方法,把上面的测试数据作为参数传入,TempFileName则为上面制作的pdf模板的名称,然后就可以生产添加了数据的pdf文本流了。
5、如果要查看pdf,就把文本流保存为pdf文件(具体代码自己琢磨)
总结:该种方法生产pdf文件适合固定的表格形式的pdf,即pdf的样式固定的,只需要在指定的区域添加文本的那种,如果是不固定的pdf直接使用代码生产比较好。