开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

通过 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); }
复制代码


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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PDF处理控件Spire.PDF常见问题解答
为方便使用者快速掌握和了解Spire.PDF,本文列举了PDF理控件Spire.pdf常见问题及解答欢迎下载最新版体验!
0 0
基于iTextSharp的PDF文档操作
  公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地。其中需要物流公司提供一个运单号,来追踪货物到达哪里?!   最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用对方提供的API,简单说,就是我们传一些发货地址和客户信息,要发的货物等,对方返回一个运单号和物流面单(就是我们淘宝快递上的面单)。
1284 0
C#如何在PDF文件添加图片印章
文档中添加印章可以起一定的作用,比如,防止文件随意被使用,或者确保文档内容的安全性和权威性。C#添加图片印章其实也有很多实现方法,这里我使用的是免费的第三方软件Free Spire.PDF for .NET,向大家阐述如何以编程的方式在PDF文件中添加图片印章。
649 0
C# iTextSharp 生成 PDF
使用iTextSharp在Asp.Net中操作PDF系列文章 目录 http://www.cnblogs.com/CareySon/category/332146.html 实战 iTextSharp http://www.
873 0
使用ItextSharp产PDF完整操作
原文 使用ItextSharp产PDF完整操作  记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题。客户的主机不愿意安装excel, 这时我才意识到用自带组件完全是不行的,我本来准备改用NPOI组件,但是这时客户提出为了安全(数据安全),改用后台产PDF。
995 0
iText 制作PDF
前言 由于在MVC项目中需要使用PDF,所以自己抽空也来看看itext,以便于丰富自己的知识吧。在此也简单的记录一下,说不定以后可能还用的到。 在此您可以下载你想使用的版本http://sourceforge.net/projects/itextsharp/files/itextsharp/。
894 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
yqdh_58c132b510d...1510468348.pdf
立即下载
yqdh_58086889262...1508901025.pdf
立即下载
119-us-17-Chern...1506609556.pdf
立即下载