如何使用C#程序给PDF文件添加编辑域
发布时间:2020-12-15 06:12:23 所属栏目:百科 来源:网络整理
导读:PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能。 环境 工具:VS2015 语言:C# 操作PDF类库:iTextSharp 5.5.10 生成的PDF预览的工具:Skim、福昕阅读器、Acrobat Re
PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能。 环境 工具:VS2015 语言:C# 操作PDF类库:iTextSharp 5.5.10 生成的PDF预览的工具:Skim、福昕阅读器、Acrobat Reader 代码实现 获取文档的页数 PdfReader reader = new PdfReader(@"C:WorkSpace1.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; iTextSharp.text.Rectangle(105,125) 用来设置文本域的位置,四个参数分别为:llx、lly、urx、ury: llx 为Left ,lly 为Bottom,urx 为Right,ury 为Top 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); 完整代码 public static void AddTextField() { PdfReader reader = new PdfReader(@"C:WorkSpace1.pdf"); FileStream out1 = new FileStream(@"C:WorkSpace2.pdf",FileMode.Create,FileAccess.Write); PdfStamper stamp = new PdfStamper(reader,out1); //获得pdf总页数 int count = reader.NumberOfPages; TextField fieldDate = new TextField(stamp.Writer,"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,530,"sign"); fieldSign.BackgroundColor = BaseColor.WHITE; fieldSign.BorderWidth = 1; fieldSign.BorderColor = BaseColor.BLACK; fieldSign.BorderStyle = 4; fieldSign.FontSize = 11f; Chunk cname = new Chunk("Date:",0))); Chunk ctitle = new Chunk("User Sign:",new BaseColor(0,128,128))); Phrase pname = new Phrase(cname); Phrase ptitle = new Phrase(ctitle); //PdfContentBye类,用来设置图像和文本的绝对位置 PdfContentByte over = stamp.GetOverContent(count); ColumnText.ShowTextAligned(over,0); ColumnText.ShowTextAligned(over,ptitle,350,0); stamp.AddAnnotation(fieldDate.GetTextField(),count); stamp.AddAnnotation(fieldSign.GetTextField(),count); stamp.FormFlattening = true; stamp.Close(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |