iTextSharp - PDF 书签未指向页面
iTextSharp - PDF Bookmark not pointing to a page
我构建了一个树视图来显示给定 PDF 文档的书签。
我使用 iTextSharp 在列表中获取书签 object 并使用 Title 值显示在树视图上,没问题。
当我希望树视图节点引用 PDF 文档中的页码时出现问题。
一些 PDF 文档具有标题、页面和操作的值,例如:
标题: "Title Page",
页: "1 XYZ -3 845 1.0",
操作:"GoTo"
不过,其他的都是这种格式:
标题: "Title Page",
命名: "G1.1009819",
操作: "GoTo"
我不知道如何处理 "Named" 值。我已经尝试遍历文档中的所有 link 并将值与 link 的目标值进行比较,但没有成功。
有人知道这个"Named"属性代表什么吗?
这是一个命名目的地,请参阅 the keyword list 了解一些示例。这是在文档中标记目的地的一种非常常用的方法。
你想用命名的目的地做什么?
是否要consolidateNamedDestinations()
使它们不再命名为目的地,而是links 到文档中的特定位置。
或者您想创建一个 link 到指定目的地? (这可能是更多的工作。我认为手头没有例子。)
如果您浏览 the examples,您会发现 LinkActions
我们使用 SimpleNamedDestination
对象检索命名目的地的方式几乎与使用 SimpleBookmark
class.
此代码片段以 XML 文件的形式向我们提供了书签:
public void createXml(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
HashMap<String,String> map = SimpleNamedDestination.getNamedDestination(reader, false);
SimpleNamedDestination.exportToXML(map, new FileOutputStream(dest),
"ISO8859-1", true);
reader.close();
}
结果见destinations.xml。
代码更简单,因为结构不是嵌套的:每个名称对应一个目的地。
我构建了一个树视图来显示给定 PDF 文档的书签。
我使用 iTextSharp 在列表中获取书签 object 并使用 Title 值显示在树视图上,没问题。
当我希望树视图节点引用 PDF 文档中的页码时出现问题。
一些 PDF 文档具有标题、页面和操作的值,例如:
标题: "Title Page",
页: "1 XYZ -3 845 1.0",
操作:"GoTo"
不过,其他的都是这种格式:
标题: "Title Page",
命名: "G1.1009819",
操作: "GoTo"
我不知道如何处理 "Named" 值。我已经尝试遍历文档中的所有 link 并将值与 link 的目标值进行比较,但没有成功。
有人知道这个"Named"属性代表什么吗?
这是一个命名目的地,请参阅 the keyword list 了解一些示例。这是在文档中标记目的地的一种非常常用的方法。
你想用命名的目的地做什么?
是否要consolidateNamedDestinations()
使它们不再命名为目的地,而是links 到文档中的特定位置。
或者您想创建一个 link 到指定目的地? (这可能是更多的工作。我认为手头没有例子。)
如果您浏览 the examples,您会发现 LinkActions
我们使用 SimpleNamedDestination
对象检索命名目的地的方式几乎与使用 SimpleBookmark
class.
此代码片段以 XML 文件的形式向我们提供了书签:
public void createXml(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
HashMap<String,String> map = SimpleNamedDestination.getNamedDestination(reader, false);
SimpleNamedDestination.exportToXML(map, new FileOutputStream(dest),
"ISO8859-1", true);
reader.close();
}
结果见destinations.xml。
代码更简单,因为结构不是嵌套的:每个名称对应一个目的地。