通过 iTextSharp 实现PDF 审核盖章

简介: 原文 通过 iTextSharp 实现PDF 审核盖章 最近需要做一个PDF自动审核盖章的工作,其实就是读取PDF,然后再最后一页加入一个审核章印图片上去。看起来很简单,不过在开发过程中,还是遇到了一些问题,在这里记录一下。

原文 通过 iTextSharp 实现PDF 审核盖章

最近需要做一个PDF自动审核盖章的工作,其实就是读取PDF,然后再最后一页加入一个审核章印图片上去。看起来很简单,不过在开发过程中,还是遇到了一些问题,在这里记录一下。

  

  

     主要遇到的问题是页面的旋转 和 内容的旋转 的分开的,需要分别操作。

 

复制代码
               
          string path = @"D:\28727_LOG001_FOLIOLE COMPANY LIMITED_STOCK_PI"; // 创建一个PdfReader对象 PdfReader reader = new PdfReader(path + ".pdf"); // 获得文档页数 int n = reader.NumberOfPages; // 获得第一页的大小 Rectangle psize = reader.GetPageSize(1); float width = psize.Width; float height = psize.Height; // 创建一个文档变量 Document document = new Document(psize); // 创建该文档 生成物理文件 PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path + "_APPROVE.pdf", FileMode.OpenOrCreate)); // 打开文档 document.Open(); // 添加内容 PdfContentByte cb = writer.DirectContent; for (int i = 0; i < n; ) { i++; //设置指定页的PagSize 包含Rotation(页面旋转度) document.SetPageSize(reader.GetPageSizeWithRotation(i));
//创建一个新的页面,需要注意的调用NewPage() ,PdfContentByte cb 对象会默认清空 document.NewPage(); //获取指定页面的旋转度 int rotation = reader.GetPageRotation(i); //获取加载PDF的指定页内容 PdfImportedPage page1 = writer.GetImportedPage(reader, i); //添加内容页到新的页面,并更加旋转度设置对应的旋转 switch (rotation) { case 90: cb.AddTemplate(page1, 0, -1, 1, 0, 0, reader.GetPageSizeWithRotation(i).Height); break; case 180: cb.AddTemplate(page1, -1, 0, 0, -1, reader.GetPageSizeWithRotation(i).Width, reader.GetPageSizeWithRotation(i).Height); break; case 270: cb.AddTemplate(page1, 0, 1, -1, 0, reader.GetPageSizeWithRotation(i).Width, 0); break; default: cb.AddTemplate(page1, 1, 0, 0, 1, 0, 0);//等同于 cb.AddTemplate(page1, 0,0) break; } if (i == n)//如果是最后一页加入指定的图片 {
               //不同旋转度的页面 图片位置left距离的调整
                       int imgLeft = 350;
               if(rotation==90 || rotation==270)
               { imgLeft = 550; } 
//创建一个图片对象 iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(new Uri(@"d:\Lock-icon.png")); //设置图片的指定大小 //img.ScaleToFit(140F, 320F); //按比例缩放 //img.ScalePercent(50); //把图片增加到内容页的指定位子 b width c height e bottom f left cb.AddImage(img, 0, 32F, 32F, 0, 50F, imgLeft); //开始增加文本 cb.BeginText(); BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //设置字体 大小 cb.SetFontAndSize(bf, 9); //指定添加文字的绝对位置 cb.SetTextMatrix(imgLeft, 200); //增加文本 cb.ShowText("GW INDUSTRIAL LTD"); //结束 cb.EndText(); } } // 关闭文档 document.Close(); } catch (Exception de) { Console.Error.WriteLine(de.Message); Console.Error.WriteLine(de.StackTrace); }
复制代码


记录工作点滴,持续提升自己。

目录
相关文章
|
JavaScript 前端开发
React+html2canvas+jspdf+antd快速实现前端pdf预览及打印
文章的总结目标实际上就是一个前端pdf打印组件,由於能在往后的其他项目中得以快速上手,并能根据所在项目需要快速自定义扩展,因此組件非常简陋直白,文章是实践过程的记录产物,并不保证完全正确,仅作参考。
React+html2canvas+jspdf+antd快速实现前端pdf预览及打印
|
存储 JavaScript 前端开发
js实现灵活下载和预览网络链接pdf文件
js实现灵活下载和预览网络链接pdf文件
854 0
|
前端开发 算法 Java
1024程序员节|历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案
🍅程序员小王的博客:程序员小王的博客 🍅CSDN地址:程序员小王java 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
1359 0
1024程序员节|历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案
|
Java 索引
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
本文使用SpringBoot2.3.x + ElasticSearch7.6.2 实现对PDF,WORD进行全文检索 实现了对文件内容快速搜索
1048 0
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
|
前端开发 应用服务中间件 nginx
react react-pdf实现在线pdf加载(翻页加载、下拉滚动加载)
react react-pdf实现在线pdf加载(翻页加载、下拉滚动加载)
java实现pdf电子合同设置合同编号
现在有一些用户信息合同,要求在合同上添加合同编号,合同编号要求按照一定规则系统生成.看过很多同学的实现方案,也尝试过很多,为了方便以后有同样需求的同学可以节省时间,进行了相关内容的梳理.
java实现pdf电子合同设置合同编号
|
JavaScript 前端开发
Vue中 前端实现生成 PDF 并下载
Vue中 前端实现生成 PDF 并下载
1024 0
Vue中 前端实现生成 PDF 并下载
|
JSON 自然语言处理 数据可视化
如何用Elasticsearch实现Word、PDF,TXT文件的全文内容检索?
如何用Elasticsearch实现Word、PDF,TXT文件的全文内容检索?
如何用Elasticsearch实现Word、PDF,TXT文件的全文内容检索?
|
机器学习/深度学习 人工智能 文字识别
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
|
机器学习/深度学习 人工智能 文字识别
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——从 PDF 提取单个数据段
UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——从 PDF 提取单个数据段