使用itext简单的编辑PDF文件
程序员文章站
2022-07-07 17:55:48
...
Document document = new Document(); try { PdfReader reader = new PdfReader("D://1.pdf"); //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf. PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("D://2.pdf")); PdfContentByte over = stamper.getOverContent(1); // 开始写入文本 // 这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题. BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题. Font font = new Font(bf, 10); font.setStyle(Font.BOLD); font.getBaseFont(); // 用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息. PdfDictionary p = reader.getPageN(1); // 拿到mediaBox 里面放着该页pdf的大小信息. PdfObject po = p.get(new PdfName("MediaBox")); // po是一个数组对象.里面包含了该页pdf的坐标轴范围. PdfArray pa = (PdfArray) po; System.out.println(pa.size()); // 看看y轴的最大值. System.out.println(pa.getAsNumber(pa.size() - 1)); // 开始写入文本 over.beginText(); // 设置字体和大小 over.setFontAndSize(font.getBaseFont(), 10); // 设置字体颜色 over.setColorFill(BaseColor.RED); // 设置字体的输出位置 over.setTextMatrix(107, 540); over.showText("HELLO WORLD "); over.endText(); // 画一个圈. over.setRGBColorStroke(0xFF, 0x00, 0x00); over.setLineWidth(5f); over.ellipse(250, 450, 350, 550); over.stroke(); // 插入一页 stamper.insertPage(2, reader.getPageSize(1)); PdfContentByte over2 = stamper.getOverContent(2); // 第2页画圈 over2.setRGBColorStroke(0xFF, 0x00, 0x00); over2.setLineWidth(5f); over2.ellipse(350, 200 + 450, 450, 200 + 550); over2.stroke(); stamper.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("file create exception"); }
推荐阅读
-
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
-
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
-
php使用ftp下载文件的简单例子
-
Python使用tablib生成excel文件的简单实现方法
-
WebClient下载文件的简单使用
-
ThinkPHP学习札记(二)入口文件的作用、URL控制、模板的简单使用方式
-
(转)java Springboot富文本编辑器ueditor的内容使用itext5导出为pdf文件
-
c#使用简单工厂模式实现生成html文件的封装类分享
-
C#使用itextsharp生成PDF文件的实现代码
-
使用Python进行二进制文件读写的简单方法(推荐)