我尝试使用 Apache PDFBOX 将现有 pdf 中的字符串替换为“XXX”。当我直接使用 org.apache.pdfbox.examples.pdmodel 中的 ReplaceString.java 时,我无法替换它
所以我们修改了以下部分。
. . .
else if( op.getOperation().equals( "TJ" ) )
{
COSArray previous = (COSArray)tokens.get( j-1 );
for( int k=0; k<previous.size(); k++ )
{
Object arrElement = previous.getObject( k );
if( arrElement instanceof COSString )
{
COSString cosString = (COSString)arrElement;
String string = cosString.getString();
string = string.replaceFirst( strToFind, message );
cosString.reset();
cosString.append( string.getBytes() );
}
}
}
. . .
修改为:
else if( op.getOperation().equals( "TJ" ) )
{
COSArray previous = (COSArray)tokens.get( j-1 );
for( int k=0; k<previous.size(); k++ )
{
Object arrElement = previous.getObject( k );
if( arrElement instanceof COSString )
{
COSString cosString = (COSString)arrElement;
byte[] cosBytes = cosString.getBytes();
String s = new String(cosBytes, "Cp1047");
if(s.contains(strToFind))
{
String newString = s.replaceAll(strToFind, message);
cosString.reset();
cosString.append( newString.getBytes("Cp1047") );
}
}
}
}
. .
这用另一个替换了字符串。但在 PDF 的某些位置,字符串在给定数字时被替换,但在替换为字母时显示空白。
请帮忙。