之前的方向一直是怎么遍历pdf的内容,然后把做标记的地方换成我想要的字符(支持中文)。虽然用pdfbox的包也解决了这个问题,但是很麻烦。
前一段时间找到了itext生成pdf水印的方法,想想其实我可以不用遍历pdf,只要把我之前做标记的地方清空,然后用加水印的方法加上我想要的内容。
先看代码,注释的比较细了 算是比较好的解决了我的问题,替换字符,中文乱码等
包itextpdf 5.5.8
public static void editPDF(String oldString, String newsString, String chars) {
<span style="white-space:pre"> </span>try {
// 获取pdf文档
PdfReader reader = new PdfReader(oldString);
// 一个输入流吧应该,把上面获取的文档写到新的pdf中
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(newsString));
// 创建字体(生成水印用到的字体)参数一:字体名称(可以写入中文字体),参数二:字体编码,参数三:是否嵌入
BaseFont bFont = BaseFont.createFont("c:\\windows\\fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
// 循环pdf页数
for (int i = 1; i < reader.getNumberOfPages() + 1; i++) {
// 水印工具
PdfContentByte over = stamper.getOverContent(i);
//开始
over.beginText();
//设置字体大小,可以在开始前设置
over.setFontAndSize(bFont, 8.1f);
//水印位置 参数一:对齐(左中右都行) 参数二:水印内容 参数三四:水印开始坐标 参数五:水印旋转角度
over.showTextAligned(PdfContentByte.ALIGN_LEFT, chars, 555, 3, 0);
//结束
over.endText();
}
stamper.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
<span style="white-space:pre"> </span>}
}
http://www.cnblogs.com/jston/archive/2013/02/20/2919197.html
包itextpdf 5.5.8