PDFBOX替换文本(pdfbox版本2.0.24)

本文介绍了如何在PDFBOX 2.0.24版本中替换文本。针对网上常见方法无效的问题,作者通过深入研究PDFTextStripper的showText解析及PDPageContentStream的showText写入,提出了解决方案。关键在于理解Tj、TJ操作符,以及PDFont的encode、readCode和toUnicode方法,通过替换PDFont实现文本替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前替换PDFBOX文本一直替换不了,查看到网上很多案例全都是直接使用cosstring.setValue。并没有效果。直到研究了PDFTextStripper的showText方法(解析)以及PDPageContentStream的showText方法(写入)才得到最终的解决方案。

首先在官方的exmaple文档中有个RemoveAll的案例这个案例当中是去除所有pdf的文字(github搜索pdfbox找到exmaple),得到图片。可以看到操作符Tj,TJ是写入文字,前一个token就是COSString。Tf是设置文字前两个token是字体。我们对这个方法体改造就可以做到替换文本了。

关键点:PDFont的encode方法,PDFont 的readCode方法,PDFont的toUnicode方法,替换当前PDFont为自己加载的pdfont。

public static List<Object> replaceText(PDContentStream contentStream, PDDocument document,String witch,String replace) throws Exception			 {
		//得到当前页面的所有的资源
		PDResources resources = contentStream.getResources();
		//解析当前页面,并得到token
		PDFStreamParser parser = new PDFStreamParser(contentStream);
		Object token = parser.parseNextToken();
		List<Object> newTokens = new ArrayList<Object>();
		Map<COSName,PDFont> fon
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值