备案 控制台
开发者社区 云计算 文章 正文

根据PDF模板生成PDF文件(基于iTextSharp)

简介:

根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成。场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议。原理很简单,但是每个技术人员解决问题的思路不太一样。也有朋友直接通过Canvas来实现,过程是把内容排版好,然后生成图片,然后根据图片生成PDF文件,这种方式有个问题,如果要是要求兼容移动端的话,在移动设备上排版出来的效果肯定不太一样,导致最终生成的电子协议和期望的相差太大。下面我们就利用PDF中的表单元素,来完成PDF内容的替换。

过程是这样的!

我这边收到一份word版的文档,首先,我们将其另存为PDF文件。

其次,在 https://www.pdfescape.com/open/这个网站,将PDF文件上传上去,进行在线编辑。
TIM_20180622153927
也可以通过PDF软件工具,进行编辑。这里,我把需要填写部分的内容,全画上表单元素,设置元素的name,后面根据name 属性对其进行赋值。

添加表单元素,右键设置name属性。

TIM_20180622161754

再看看,表单都支持什么?
TIM_20180622162011

下面,我们新建一个控制台程序,通过nuget获取itextSharp。

控制台代码如下:

/// <summary>
      /// 
      /// </summary>
      /// <param name="args"></param>
      static void Main(string[] args)
      {
          string tempFilePath = "D:\\a.tmp.pdf";
          iTextSharp.text.pdf.PdfDocument document = new iTextSharp.text.pdf.PdfDocument();

          iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(@"D:\d.pdf");
          PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(tempFilePath, FileMode.OpenOrCreate));
          AcroFields pdfFormFields = pdfStamper.AcroFields;
          pdfStamper.FormFlattening = true;

          //BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
          BaseFont simheiBase = BaseFont.CreateFont(@"C:\Windows\Fonts\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

          //添加图片
          //Image image = Image.GetInstance("");
          //pdfStamper.Writer.Add(image);

          pdfFormFields.AddSubstitutionFont(simheiBase);
          pdfStamper.AcroFields.SetField("Names", "李朝强");
          pdfStamper.AcroFields.SetField("chk", "yes", true);
          pdfStamper.Close();
          pdfReader.Close();


          ////解析文本
          //PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);

          //PdfWriter pdfWriter;

          //ITextExtractionStrategy strategy;
          //strategy = parser.ProcessContent<SimpleTextExtractionStrategy>(1, new SimpleTextExtractionStrategy());
          //string ss = strategy.GetResultantText();

          //byte[] buffer = pdfReader.GetPageContent(1);

          //string strBody = System.Text.Encoding.Default.GetString(buffer);
      }  

上面代码,根据D盘的d.pdf模板,来生成最终的PDF文件。这里通过给AcroFields中的字段赋值,来达到替换内容的目的。

上面还有一种复选框(checkbox)的内容,pdf也支持,这里直接给其赋值yes或no,来控制是否选中。

最后一步就是将生成的PDF进行展示了。这里借助于pdf.js(微信也支持)。看看效果吧!
TIM_20180622154459

看看手机微信版!
IMG_2410_1_

鬼潇雨
目录
相关文章
fruge365
|
18天前
|
Web App开发 Windows
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
fruge365
210 0
风水道人
|
18天前
|
前端开发
开发过程中遇到过的docx、pptx、xlsx、pdf文件预览多种方式
开发过程中遇到过的docx、pptx、xlsx、pdf文件预览多种方式
风水道人
32 0
傻啦嘿哟
|
18天前
|
数据挖掘 数据安全/隐私保护 开发者
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
傻啦嘿哟
176 0
傻啦嘿哟
|
18天前
|
存储 缓存 Python
如何使用Python抓取PDF文件并自动下载到本地
如何使用Python抓取PDF文件并自动下载到本地
傻啦嘿哟
51 0
米码收割机
|
18天前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
米码收割机
43 0
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
游客pxynxsrl3ycx6
|
18天前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
游客pxynxsrl3ycx6
36 0
最后的轻语guga1688
|
2天前
分享:批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题,图片转PDF文件,批量图片转PDF文件,多级目录的图片转PDF文件,并且保存到不同的地方,全部搞定
本文介绍了如何高效地将图片转换为PDF,包括单张、多张及多级目录下的图片转换和合并。提供了软件下载链接(百度网盘、腾讯云盘),软件操作简便,支持保存原目录或自定义新目录。转换选项包括单个文件、多个文件夹单独转换以及合并转换。用户可通过双击路径访问源图片和转换结果。该工具特别解决了多级目录图片批量转换的难题,实现保存地址的自由设定,满足不同业务需求。
最后的轻语guga1688
15 0
最后的轻语guga1688
|
2天前
|
Windows
推荐:如何批量根据PDF文件名批量查找PDF文件,复制到指定地方保存,通过文件名批量复制文件,按照文件名批量复制文件,根据文件名批量提取文件
该文介绍了一个批量查找PDF文件(不限于找PDF)的工具,用于在多级文件夹中快速查找并复制特定文件。通过下载提供的软件,用户可以加载PDF库,输入文件名列表,设置操作参数(如保存路径、复制或删除)及搜索模式。软件能高效执行,例如在1.1秒内完成对数千文件中的37个目标文件的复制,显著提升了工作效率,避免了手动逐个查找和复制的繁琐。
最后的轻语guga1688
18 0
yuanzhengme
|
3天前
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
yuanzhengme
22 1
yuanzhengme
|
4天前
|
存储 Java
java使用pdfbox 3.0版本删除pdf文件中指定字符所在行,生成新的pdf文件
【5月更文挑战第25天】java使用pdfbox 3.0版本删除pdf文件中指定字符所在行,生成新的pdf文件
yuanzhengme
12 1

热门文章

最新文章

  • 1
    【资料合集】红包在线技术峰会回顾集锦:讲义PDF+活动视频!
  • 2
    47.4. PHP PDF 处理库
  • 3
    FusionCharts V3图表导出图片和PDF属性说明(转)
  • 4
    [Office 2010 易宝典]怎样直接将Office文档保存为PDF格式?
  • 5
    使用PDF.NET数据开发框架的实体操作语言OQL构造复杂查询条件
  • 6
    【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
  • 7
    C# 复制PDF页面到另一个PDF文档
  • 8
    快速生成PDF书签
  • 9
    Csharp:user WebControl Read Adobe PDF Files In Your Web Browser
  • 10
    ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
  • 1
    springboot使用html模版导出pdf文档
    227
  • 2
    使用pdf2docx轻松将PDF转换成docx
    72
  • 3
    Python实现从PDF和图片提取文字的方法总结
    109
  • 4
    使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
    176
  • 5
    如何使用Python抓取PDF文件并自动下载到本地
    51
  • 6
    如何在 CRM Assignment block 里创建支持 Web Service 的 PDF 附件
    11
  • 7
    itext制作pdf表格
    32
  • 8
    Java【代码 16】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
    154
  • 9
    福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!
    42
  • 10
    CVPR 2023 最全分割类论文整理:图像/全景/语义/实例分割等【附PDF+代码】
    216
  • 相关电子书

    更多
  • 对象存储实战指南-试读
  • OpenAnolis 龙蜥操作系统开源社区技术创新白皮书
  • 使用CNFS搭建弹性Web服务
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    哆哆女性网给一个小男孩起个小名民权货运属猪女缺金起名个人公众号起名字棋灵王网站建设无锡美容院起个什么名字比较好呢71店起名网取名免费大青叶种植seo营销计划周易中的64卦网站按天扣费优化推广那年那兔那些事儿观后感桶装水品牌起名产品推广营销方案seo营销推广方法深圳交易网站建设排八字起姓名大全动画片大全集北京响应式网站建设公司成都品牌网站制作免费微网站建设庙街十三妹形容雪的词语源字起名字的寓意祝起名字好吴文字辈起名网站建设和网营销广州高起专报名时间淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

    哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化