如何使用C#程序给PDF文件添加编辑域
PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能。
环境
工具:VS2015
语言:C#
操作PDF类库:iTextSharp 5.5.10
生成的PDF预览的工具:Skim、福昕阅读器、Acrobat Reader
代码实现
获取文档的页数
|
1
2
|
PdfReader reader = new PdfReader(@"C:\WorkSpace\1.pdf");int count = reader.NumberOfPages; |
创建文本域
|
1
2
3
4
|
TextField fieldDate = new TextField(stamp.Writer, new iTextSharp.text.Rectangle(105, 100, 240, 125), "date");fieldDate.BackgroundColor= BaseColor.WHITE;fieldDate.BorderWidth= 1;fieldDate.BorderColor= BaseColor.BLACK;fieldDate.BorderStyle= 4;fieldDate.FontSize = 11f; |
iTextSharp.text.Rectangle(105, 100, 240, 125) 用来设置文本域的位置,四个参数分别为:llx、lly、urx、ury:
llx 为Left ,lly 为Bottom,urx 为Right,ury 为Top
其中:Width=Right - Left Heigth = Top - Bototom
创建文本
|
1
2
3
4
|
Chunk cname = new Chunk("Date:", FontFactory.GetFont("Futura", 16f,new BaseColor(170,64,0)));Phrase pname = new Phrase(cname);PdfContentByte over = stamp.GetOverContent(count);ColumnText.ShowTextAligned(over, Element.ALIGN_CENTER, pname, 400, 420, 0); |
完整代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
public static void AddTextField(){ PdfReader reader = new PdfReader(@"C:\WorkSpace\1.pdf"); FileStream out1 = new FileStream(@"C:\WorkSpace\2.pdf", FileMode.Create, FileAccess.Write); PdfStamper stamp = new PdfStamper(reader, out1); //获得pdf总页数 int count = reader.NumberOfPages; TextField fieldDate = new TextField(stamp.Writer, new iTextSharp.text.Rectangle(105, 100, 240, 125), "date"); fieldDate.BackgroundColor = BaseColor.WHITE; fieldDate.BorderWidth = 1; fieldDate.BorderColor = BaseColor.BLACK; fieldDate.BorderStyle = 4; fieldDate.FontSize = 11f; TextField fieldSign = new TextField(stamp.Writer, new iTextSharp.text.Rectangle(430, 100, 530, 125), "sign"); fieldSign.BackgroundColor = BaseColor.WHITE; fieldSign.BorderWidth = 1; fieldSign.BorderColor = BaseColor.BLACK; fieldSign.BorderStyle = 4; fieldSign.FontSize = 11f; Chunk cname = new Chunk("Date:", FontFactory.GetFont("Futura", 16f,new BaseColor(170,64,0))); Chunk ctitle = new Chunk("User Sign:", FontFactory.GetFont("Futura", 16f, new BaseColor(0, 128, 128))); Phrase pname = new Phrase(cname); Phrase ptitle = new Phrase(ctitle); //PdfContentBye类,用来设置图像和文本的绝对位置 PdfContentByte over = stamp.GetOverContent(count); ColumnText.ShowTextAligned(over, Element.ALIGN_CENTER, pname, 400, 420, 0); ColumnText.ShowTextAligned(over, Element.ALIGN_CENTER, ptitle, 400, 350, 0); stamp.AddAnnotation(fieldDate.GetTextField(), count); stamp.AddAnnotation(fieldSign.GetTextField(), count); stamp.FormFlattening = true; stamp.Close();} |
您可能感兴趣的文章:

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
如何使用C#程序给PDF文件添加编辑域的更多相关文章
- 如何给现有的PDF文件添加页码
如何给现有的PDF文件添加页码 之前我写了如何打印PDF文件,有人qq问我怎样在打印时给PDF文件添加页码,的确,给PDF文件添加页码,可以帮助我们区分纸质档的PDF文件页面的先后顺序,方便我们对它的 ...
- PDF怎样添加注释,PDF文件添加注释的方法
Word文件跟纸质文件想要添加注释相信大家都知道该怎么添加,那么现在也使用频率挺高的PDF格式的文件要怎么添加注释呢?添加注释的方法有什么呢?有许多的小伙伴们都想知道吧,今天小编就来跟大家分享一下,想 ...
- pdf文件添加到word中
今天遇到了一个问题,如何把pdf文件添加到word中,而不是只添加图标,下面是解决方案: 1.用word 打开pdf文件: 2.打开word文件: 3.把1中的pdf文件复制粘贴 到2中的word文件 ...
- c#程序为PDF文件填写表单内容
众所周知,PDF文件一般情况下是无法修改的,如果你有一张现成的PDF表格,这时想通过编程实现从数据库或者动态生成内容去填写这张表格,就会有些问题了,首先我们要解决以下2个重要的问题: 1.如何将内容写 ...
- C#如何在PDF文件添加图片印章
文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性.C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF,向大家阐述 ...
- 给pdf文件添加防伪水印logo(附工程源码下载)
pdf添加水印logo这种需求场景确实很少,有些时候一些销售单据生成pdf添加一个水印logo,做一个简单的防伪效果,虽然实际上并没有太大作用,但是产品经理说要,巴拉巴拉--省略一万字. 下面将源码分 ...
- PDF文件添加二维码水印教程
maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/i ...
- 使用canvas保存网页为pdf文件支持跨域
前言 之前上一篇随笔说了Canvas截图网页为图片,下来个新需求,把网页截图后保存为PDF文件供用户下载. 前文 Canvas截图网页为图片:https://www.cnblogs.com/bubub ...
- itext 生成pdf文件添加页眉页脚
原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...
随机推荐
- git源代码管理工具
git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...
- 理解Javascript的Event Loop
一.单线程 js作为浏览器脚本语言,他的主要用途是与用户交互,以及操作DOM,这决定了它只能是单线程,为什么呢?因为假如js同时有两个线程,一个线程是在DOM上增加内容,另一个线程是删除这个节点,那么 ...
- jquery分页滑动插件(鼠标可控制上下滑动)
这个插件非常好用 http://www.swiper.com.cn/
- 在Indicator中添加动态Checkbox,无需绑定数据源,支持全选 - Ehlib学习(二)
先做设置 DBGrideh属性设置: IndicatorOptions = [gioShowRowIndicatorEh, //小三角指示 gioShowRecNoEh, //数据源行号 gioSho ...
- Java SE 8 流库(一)
1. 流的作用 通过使用流,说明想要完成什么任务,而不是说明如何去实现它,将操作的调度留给具体实现去解决: 实例:假如我们想要计算某个属性的平均值,那么我们就可以指定数据源和属性,然后,流库就可以对计 ...
- CUDA 安装完成以后如何判断安装是否成功
最近在家里过寒假,可能这是还在学校里带着最大的福利了,无意之中翻出了多年前买的几本关于CUDA编程的书,于是随便在自己电脑上配置了一下环境,试试能不能把当年没有看完的书给看完了,于是有了今天这个判断C ...
- 20155202 2016-2017-2 《Java程序设计》第8周学习总结
20155202 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 有Java.util.logging包提供了日志功能相关类与接口,使用日志起点是logger ...
- Spring获取properties中同一个key对应的多条value的方法
如下方式使用Spring EL @Value("#{'${my.list.of.strings}'.split(',')}") private List<String> ...
- 20165212 2017-2018-2《Java程序设计》课程总结
20165212 2017-2018-2<Java程序设计>课程总结 作业链接汇总 每周作业链接 预备作业1:我期望的师生关系 预备作业2:做中学learning by doing个人感想 ...
- TCP滑动窗口与回退N针协议
[转]TCP 滑动窗口协议/1比特滑动窗口协议/后退n协议/选择重传协议 2014-1-5阅读884 评论0 本文转自 http://www.cnblogs.com/ulihj/archive/201 ...