iTextSharp 生成pdf Form 实例
使用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 实例相关推荐
- C# Json数据转DataTable并生成PDF在线下载--iTextSharp生成PDF实例(文件下载,json数据转换,PDF排版一步到位)
前言 本文将重点介绍iTextSharp的使用方法和易踩的一些坑,顺便介绍了json转DataTable的简单快捷高效的方法及二进制流转换文件在线即时下载的方法.经测试生成40页的pdf仅需要1秒,大 ...
- 使用 iTextSharp 生成 PDF 表格
iTextSharp 5 已经取消了 Table 类,我对照着一份 iTextSharp 4 的帮助文档,使用 VS 的智能提示找遍了所有的命名空间,都找不到 Table 类,幸好最终看到一个 Pdf ...
- ITextSharp生成PDF
ITextSharp就不多介绍了,下面就把遇到的坑一一记录下来,希望能够帮助到正在使用它的开发者们.操作pdf的方法都被作者封装好了,只是没有注释和说明,不过大部分的方法属性还是能看懂的,看不懂的可以 ...
- C#使用itextsharp生成PDF文件
前言 前段时间公司需要实现一个PDF文件下载功能,涉及到页眉页脚,段落,图片的生成.遂使用itextsharp来实现这一功能,但是itextsharp功能强大,类库繁多,特别是5.0版本后关于页眉页脚 ...
- iTextSharp生成pdf含模板(一)---制作pdf模板
参考地址:https://www.cnblogs.com/ibeisha/p/itextsharp-pdf.html 一.使用场景:在线填写一些信息,根据对应的信息生成奖状. 二.解决方案 1.新建w ...
- JAVA使用itext来生成PDF表格实例和使用说明
在对接某第三方XX平台时需要对表格传入PDF文件类型.于是自造了一个. Maven使用版本如下: <dependency><groupId>com.itextpdf</g ...
- java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板
最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...
- java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...
最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...
- itextsharp php,C#_C#使用iTextSharp设置PDF所有页面背景图功能实例,本文实例讲述了C#使用iTextSharp - phpStudy...
C#使用iTextSharp设置PDF所有页面背景图功能实例 本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然 ...
- c# 使用 itextsharp 实现生成Pdf报表
由于项目需要,所以学习Itextsharp 此项目需求是 某一角色提交申请,然后从后台查出数据生成pdf报表 打印出来用于查看 以下是代码: string sql = "select ...
最新文章
- hangfire 过期记录_韩剧丨顶楼、空洞、再次十八岁、僵尸侦探、青春记录
- hibernate基础工具findBySQL学习
- python中的event_Python event
- asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider
- mysql做wp网站_mysql做wp网站
- SIGPIPE信号处理
- 可以载入史册的新名词:市场经济(蝳品经济)的上瘾依赖特性
- 对同一元素设置overflow-x:hidden,overflow-y:visible;属性值不生效
- WIN10_cmd命令提示符更换用户启动
- goeasy服务器发送(发布)消息,python服务端使用GoEasy实现websocket消息推送
- 浏览器第二节:TCP协议:如何保证页面文件能被完整送达浏览器
- 康奈尔大学做笔记方式
- 【计算理论】计算理论总结 ( 上下文无关文法 ) ★★
- python 读取TXT文件数据(字符或数值)存放在numpy数组中以及训练集测试集的处理(1)(个人笔记)
- 汽车金融信用评分卡模型-论文_毕业设计_企业项目复现
- HBuild——创建表格
- MySQL的函数——聚合函数、数学函数、字符串函数、日期函数
- 安卓开发贴吧!Android高级工程师必看系列,建议收藏
- TI单芯片毫米波雷达代码走读(二十五)—— 角度维(3D)处理流程
- 第18节 渗透测试流程和简单案例
热门文章
- “产品助理最重要的工作是 Android 版本的设计与测试”
- matlab画交通标志,基于MATLAB的交通标志设计方法研究
- 随笔:《向死而生》---我修的死亡学分
- Python在运维工作中的经典应用之ansible
- 3django url name详解
- 安卓绿色联盟安全标准1.0到2.0,让用户隐私更安全
- js判断IE浏览器及版本
- JavaScript之JS单线程|事件循环|事件队列|执行栈
- 【9108】模拟数学计算器
- .NET之EntityFramework框架运用