使用Adobe acrobat Pro先手工做一个Pdf Form的模板:

1.新建:,选择新建/Pdf form file(Ctrl+N), 可以选择先有的某些类型的文件作为最处的模板,选择一个文件后(例如.txt的),就新建好了.

2.编辑:选择右边的工具栏,选择Content/Edit Document Text/Edit Object或者是Content/Edit Document Text?Edit Document Text可以编辑新  建时导入的静态文本(.txt).

3.添加表单字段:点击右边工具栏 Content/Edit Or Edit Interactive Object/下面的 Button,然后鼠标移动到文档中就可以添加字段,Button 说对应的是图片等多媒体字段. 新建一个Button 类型的字段后,右击新建的字段会出现(Add New Field)选项,里面有很多种Form字段的类型可以选择(Text Field,checkbo,radioButton,Dropdown,ListBox等)。

4.字段位置调整:选择工具 Content/Edit Or Edit Interactive Object/Select Object  可以对当前的Form 字段进行大致位置调整.如果需要对Form字段进行非常准确的放置,可以选择 工具条 Forms/Edit,这里面有对齐的工具尺。

 

程序代码部分:

1 static voidBuildPdfForm()2 {3            if (File.Exists("form.pdf"))4                File.Delete("form.pdf");5            FileStream stream = new FileStream("form.pdf", FileMode.Create);6            PdfReader reader = new PdfReader("template.pdf");7            PdfStamper stamper = newPdfStamper(reader, stream);8            AcroFields af =stamper.AcroFields;9            af.SetField("Name", "WangWang");10            af.SetField("Date", "2012-11-11");11            string imagepath="flower.jpg";12            if (!string.IsNullOrEmpty(imagepath) &&File.Exists(imagepath))13 {14                iTextSharp.text.Image gif =iTextSharp.text.Image.GetInstance(imagepath);15                if (gif != null)16 {17                    PushbuttonField bf = af.GetNewPushbuttonFromField("Header");18                    bf.Image =gif;19                    af.ReplacePushbuttonField("Header", bf.Field);20 }21 }22            //stamper.FormFlattening=true; 是否将 pdf Form 转为 pdf文档
23 stamper.Close();24
25        }

注意:Pdf Form 跟普通直接生成pdf文件的区别在于生成的表单是可以编辑的,保存后,其他人打开页面就是编辑后的内容。就像Name字段,程序写  入的是"WangWang" ,后面三个Add 是我后面添加的。

当然生成的Form pdf 也可以不让他人编辑,只要在field的属性里面选择只读的,这种情况字段的背景颜色是透明的,当前是可编辑的所以有颜色。

即使表单设置为只读,但结果跟普通生成的文档还是有区别:图片,字段等在pdf里面 是可移动的,如果字段里面的内容太长还可以通过拖动内容来查看。如果要将Form 文档只当做Pdf报表的模板来使用,只要设置属性 stamper.FormFlattening=true;  所生成的文档就不是表单了.这种方法对于排版比较麻烦的报表,应该是很用的.

【嵌入新字体】

1.  在目录  C:\Program Files\Adobe\Acrobat 10.0\Resource\Font 添加.otf字体

2. 选择 开始/程序/Adobe Acrobat Distiller X 软件,选择Settings/Edit Adobe PDF Settings 添加字体

3. Form 模板 打开编辑 保存后 相应的字体 就会嵌入到模板里面了。

【通过代码嵌入】

1   BaseFont font = BaseFont.CreateFont(HttpContext.Current.Server.MapPath("~/PDFTemplate/font/ArialMT.otf") ,2   BaseFont.IDENTITY_H , BaseFont.EMBEDDED);3   af.SetFieldProperty("FieldName" , "textfont" , font , null);          

【嵌入字体的另一种方法(嵌入子集)】

1.点击File->Print->Properties->纸张质量->高级—>TrurType字体: 选择‘下载为软字体’,如图

【使用form的形式,有个麻烦的东西是对于多行文本的间距设置,说实在的找了很久没找到,不过我们依然有其他办法来实现】

   下面的代码是利用PdfContentByte跟排版(columnText), 将某一段文本定位显示于某个区域内.

1    private void SetBlockAtPoint(PdfStamper stamper , string content , Font font ,float lineHeihgt=10,int pageNum=1 , int llx=42 , int lly=1 , int urx=525 , int ury=31)2 {3             PdfContentByte cbc =stamper.GetOverContent(pageNum);4             ColumnText ct = newColumnText(cbc);5             Phrase fieldtext = newPhrase();6
7             fieldtext.AddSpecial(newParagraph(lineHeihgt , content , font));8             ct.SetSimpleColumn(fieldtext , llx , lly , urx , ury , lineHeihgt , Element.ALIGN_LEFT |Element.ALIGN_TOP);9
10 ct.Go();11         }

转载于:https://www.cnblogs.com/AspDotNetMVC/archive/2012/11/16/2766545.html

iTextSharp 生成pdf Form 实例相关推荐

  1. C# Json数据转DataTable并生成PDF在线下载--iTextSharp生成PDF实例(文件下载,json数据转换,PDF排版一步到位)

    前言 本文将重点介绍iTextSharp的使用方法和易踩的一些坑,顺便介绍了json转DataTable的简单快捷高效的方法及二进制流转换文件在线即时下载的方法.经测试生成40页的pdf仅需要1秒,大 ...

  2. 使用 iTextSharp 生成 PDF 表格

    iTextSharp 5 已经取消了 Table 类,我对照着一份 iTextSharp 4 的帮助文档,使用 VS 的智能提示找遍了所有的命名空间,都找不到 Table 类,幸好最终看到一个 Pdf ...

  3. ITextSharp生成PDF

    ITextSharp就不多介绍了,下面就把遇到的坑一一记录下来,希望能够帮助到正在使用它的开发者们.操作pdf的方法都被作者封装好了,只是没有注释和说明,不过大部分的方法属性还是能看懂的,看不懂的可以 ...

  4. C#使用itextsharp生成PDF文件

    前言 前段时间公司需要实现一个PDF文件下载功能,涉及到页眉页脚,段落,图片的生成.遂使用itextsharp来实现这一功能,但是itextsharp功能强大,类库繁多,特别是5.0版本后关于页眉页脚 ...

  5. iTextSharp生成pdf含模板(一)---制作pdf模板

    参考地址:https://www.cnblogs.com/ibeisha/p/itextsharp-pdf.html 一.使用场景:在线填写一些信息,根据对应的信息生成奖状. 二.解决方案 1.新建w ...

  6. JAVA使用itext来生成PDF表格实例和使用说明

    在对接某第三方XX平台时需要对表格传入PDF文件类型.于是自造了一个. Maven使用版本如下: <dependency><groupId>com.itextpdf</g ...

  7. java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  8. java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  9. itextsharp php,C#_C#使用iTextSharp设置PDF所有页面背景图功能实例,本文实例讲述了C#使用iTextSharp - phpStudy...

    C#使用iTextSharp设置PDF所有页面背景图功能实例 本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然 ...

  10. c# 使用 itextsharp 实现生成Pdf报表

    由于项目需要,所以学习Itextsharp   此项目需求是   某一角色提交申请,然后从后台查出数据生成pdf报表 打印出来用于查看 以下是代码: string sql = "select ...

最新文章

  1. hangfire 过期记录_韩剧丨顶楼、空洞、再次十八岁、僵尸侦探、青春记录
  2. hibernate基础工具findBySQL学习
  3. python中的event_Python event
  4. asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider
  5. mysql做wp网站_mysql做wp网站
  6. SIGPIPE信号处理
  7. 可以载入史册的新名词:市场经济(蝳品经济)的上瘾依赖特性
  8. 对同一元素设置overflow-x:hidden,overflow-y:visible;属性值不生效
  9. WIN10_cmd命令提示符更换用户启动
  10. goeasy服务器发送(发布)消息,python服务端使用GoEasy实现websocket消息推送
  11. 浏览器第二节:TCP协议:如何保证页面文件能被完整送达浏览器
  12. 康奈尔大学做笔记方式
  13. 【计算理论】计算理论总结 ( 上下文无关文法 ) ★★
  14. python 读取TXT文件数据(字符或数值)存放在numpy数组中以及训练集测试集的处理(1)(个人笔记)
  15. 汽车金融信用评分卡模型-论文_毕业设计_企业项目复现
  16. HBuild——创建表格
  17. MySQL的函数——聚合函数、数学函数、字符串函数、日期函数
  18. 安卓开发贴吧!Android高级工程师必看系列,建议收藏
  19. TI单芯片毫米波雷达代码走读(二十五)—— 角度维(3D)处理流程
  20. 第18节 渗透测试流程和简单案例

热门文章

  1. “产品助理最重要的工作是 Android 版本的设计与测试”
  2. matlab画交通标志,基于MATLAB的交通标志设计方法研究
  3. 随笔:《向死而生》---我修的死亡学分
  4. Python在运维工作中的经典应用之ansible
  5. 3django url name详解
  6. 安卓绿色联盟安全标准1.0到2.0,让用户隐私更安全
  7. js判断IE浏览器及版本
  8. JavaScript之JS单线程|事件循环|事件队列|执行栈
  9. 【9108】模拟数学计算器
  10. .NET之EntityFramework框架运用