java将名为destination的书签操作更改为页码
我需要使用iText
java代码将现有pdf文件的书签操作属性命名目的地更改为页码
public void BookmarkZoomLevelChange(List<HashMap<String, Object>> list,
PdfReader reader) {
for (HashMap<String, Object> entry : list) {
for (String key : entry.keySet()) {
// System.out.println(key);
if ("Kids".equals(key)) {
Object o = entry.get(key);
BookmarkZoomLevelChange((List<HashMap<String, Object>>) o,
reader);
} else if ("Page".equals(key)) {
String dest = (String) entry.get(key);
// System.out.println(dest);
if (dest.contains("FitR")) {
String cord[] = dest.substring(dest.indexOf("R"))
.split(" ");
entry.put("Page", dest.replaceAll("FitR", "XYZ "
+ cord[1] + " " + cord[4] + " 0"));
} else if (dest.contains("XYZ")) {
String cord[] = dest.substring(dest.indexOf("XYZ"))
.split(" ");
entry.put("Page", dest.replaceAll("XYZ", "XYZ "
+ cord[1] + " " + cord[2] + " 0"));
}
}
}
}
}
使用上面的代码,我没有得到("Page".equals(key))
。那么,如何将命名目的地转换为页码
# 1 楼答案
请查看您正在使用的版本的API文档,更具体地说是} 方法,其描述如下:
PdfReader
类中可用的方法。您将发现^{您已经指定了目的地。你不喜欢这个。您希望将命名的目的地替换为指向特定页面上特定位置的显式目的地。这正是
consolidateNamedDestinations()
方法的意义所在试试这个:
通常,在
dest
PDF中应该不再有指向指定目的地的链接