用itextpdf生成水印来代替pdf的替换问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhaogui/article/details/50731726

之前的方向一直是怎么遍历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
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页