0
我需要替换具有图像,链接,段落文本等的多个PDF页面中的特定超链接。我可以更改注释,但不能更改相应的链接文本。这里是到目前为止如何使用itext替换PDF中的超链接文本
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
PdfArray array = reader.getPageN(i).getAsArray(PdfName.ANNOTS);
if (array == null) continue;
for (int j = 0; j < array.size(); j++) {
PdfDictionary annot = array.getAsDict(j);
PdfDictionary link = (PdfDictionary)reader.getPdfObjectRelease(annot);
if(i==1 && j==0 || i==2 && j==0 || i==3 && j==0 || i==4 && j==0 || i==4 && j==1){
link.put(PdfName.A, new PdfAction(newurl));
}
}
}
我曾尝试更换使用下面的代码链接文本的代码,但它似乎并不存在于流的字节。
PdfObject object = dict.getDirectObject(PdfName.CONTENTS);
if (object instanceof PRStream) {
PRStream stream = (PRStream)object;
byte[] data = PdfReader.getStreamBytes(stream);
stream.setData(new String(data).replace(oldstring, newstring).getBytes());
}
此外,链接文字下划线必须保留
您可以找到文本位置使用文本提取机制,然后用白色矩形覆盖原始链接(或使用pdf清除将其删除),并最终在该位置写入新链接。 – mkl
我能够找到文本和封面,但其下的注释并未完全删除。试着用'link.remove(PdfName.A);' – Emerald
你能帮我用代码 – Emerald