上篇说到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那个图标后,移动到文件中就会出现如图的文本域,根据自己爱好命名就可以了,制作完文本域后保存就可以了。(双击文本域可以设置该文本域的属性)
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直接使用代码生产比较好