c#程序为PDF文件填写表单内容

时间:2023-03-08 15:59:28
c#程序为PDF文件填写表单内容

众所周知,PDF文件一般情况下是无法修改的,如果你有一张现成的PDF表格,这时想通过编程实现从数据库或者动态生成内容去填写这张表格,就会有些问题了,首先我们要解决以下2个重要的问题:

1.如何将内容写到现有的PDF文件里?
2.如何能将内容准确地填写到指定的表格框里?

我们先来解决第一个问题吧,其实这个问题还是比较好解决的,只需使用一个第三方的插件即可完成,而且是开源免费的,功能很强大,非常适合填写PDF表单的需求,此插件就是 iTextSharp,也许有朋友也已用过了,具体使用方法下面再介绍 c#程序为PDF文件填写表单内容

现在第二个问题是比较麻烦的,以前我们想到的笨方法是使用坐标来填写,虽然勉强可达到效果,但大家也知道这种做法是非常痛苦的,而且效果很不好,很难可以精确对齐到某个位置去填写内容的。

在此我介绍大家一个不错的方法,先说说整体思路吧。试想想,如果我们可以将PDF里的表格框当作是HTML里的字段(field)来获取和填写,这样不就可以完美解决以上问题了?通过 iTextSharp 是可以为PDF里的字段域进行填充的,但要如何为PDF添加相应的字段呢?如果使用专业的Adobe PDF软件是可以完成此操作的,但问题是这些专业软件都不是免费的,而合价格还不低,当然对于一般开发者来说不太值得使用啦!

这里推荐一个功能超强的在线PDF处理网站,之所以说其超强,是因为不单可直接在线创建PDF,填写内容,而且还可以任意地方添加PDF字段域,并为字段设置ID名称等,同时这些字段还支丰富控件域,如:TextBox,RadioButton,CheckBox,DorpDown,ListBox 等,就像HTML里的一样,这些已可以满足所有PDF字段的需求了!

OK,现在就看看其如何强大吧,首先登录 http://www.PDFescape.com,如果你第一次使用,就先注册一个账号,步骤很简单,只要输入email和密码就可以了。登录进去后会看到几个选项,是上传一张现有的PDF还是创建新的文件,在此我就直接创建新文件以做测试吧:

使用此网站,可以非常方便地创建PDF文件内容,在左上角有很多控件可以使用,大家可自己试试,以下是我创建的内容:
c#程序为PDF文件填写表单内容

其中绿色的就是添加的字段,使用左上角的控件工具可以直接添加多种控制,以下是添加控件时的对话框:
c#程序为PDF文件填写表单内容

不同的控件还可以设置其相关属性,只需鼠标右击此控件即可:
c#程序为PDF文件填写表单内容

如果要添加单选框分组,就必须将这些单选框控件设置为一样的名称,这样就自动成为一组,每次点击只会选择到一个了:
c#程序为PDF文件填写表单内容

当然你还可以选择不同的样式哦,这个就大家自己尝试好了,呵呵 c#程序为PDF文件填写表单内容 。另外请注意在上面控件属性设置里,有一项 Export Value,这个就是此控件的默认值,之后我们在程序里获取判断就要根据这个值了,在此你可以任意设置的。

OK,现在已完成了PDF文件的制作,以下是最终成品,里面的单选和下划线全部可在左边工具栏里生成的:
c#程序为PDF文件填写表单内容

这时再点击左边下载并保存的按钮,就是一样绿色的里面有箭头的,在保存按钮下面,这时就可生成一个完整的PDF文件,大家再看看此文件的效果吧:
c#程序为PDF文件填写表单内容

看到了吧,之前添加的字段现在已可以直接在PDF里填写了,而且也可以保存填写后的内容哦,现在接下来的事情就好办了吧 :tongue:

有了字段的PDF文件,我们只需将此文件做为一个模板,再从数据库里获取数据对其填写就可以了,就像填写一张普通的HTML表单一样简单哦!现在就使用 iTextSharp 进行相关的操作吧:

//获取PDF模板文件
string templateFile = Path.Combine(Server.MapPath(@"~\pdftemplate\"), "coderblog.pdf");
//输出生成的PDF文件
string tempPDF = Path.Combine(Server.MapPath(@"~\output\"), Guid.NewGuid().ToString() + ".pdf"); //创建 PdfReader
PdfReader reader = new PdfReader(templateFile);
FileStream fFileStream = new FileStream(tempPDF, FileMode.Create); //进行PDF字段操作
PdfStamper stamper = new PdfStamper(reader, fFileStream);
AcroFields coderBlogForm = stamper.AcroFields;
//填充PDF里的字段内容
coderBlogForm.SetField("URL", "http://www.coderblog.in");
coderBlogForm.SetField("Name", "代码部落");
coderBlogForm.SetField("Option", "Yes");

经过以上处理后,在你网站根目录的output目录下,就会生成一个填充好表单内容的PDF文件了。使用此方法可以很方便地解决PDF表单填写的问题 c#程序为PDF文件填写表单内容

最后给出 iTextSharp 的下载地址:

http://sourceforge.net/projects/iTextSharp/