这取决于您所说的“书签”时的理解。
您需要大纲(书签面板中可见的条目):
The 创建在线树示例向您展示了如何使用SimpleBookmark
类来创建包含完整大纲树的 XML 文件(在 PDF 术语中,书签称为大纲)。
Java:
PdfReader reader = new PdfReader(src);
List<HashMap<String, Object>> list = SimpleBookmark.getBookmark(reader);
SimpleBookmark.exportToXML(list,
new FileOutputStream(dest), "ISO8859-1", true);
reader.close();
C#:
PdfReader reader = new PdfReader(pdfIn);
var list = SimpleBookmark.GetBookmark(reader);
using (MemoryStream ms = new MemoryStream()) {
SimpleBookmark.ExportToXML(list, ms, "ISO8859-1", true);
ms.Position = 0;
using (StreamReader sr = new StreamReader(ms)) {
return sr.ReadToEnd();
}
}
The list
对象还可以用于以编程方式一一检查不同的书签元素(这在官方文档中都有解释)。
您需要指定的目的地(文档中您可以通过名称链接到的特定位置):
现在假设您想说的是命名目的地,那么您需要SimpleNamedDestination
类如所示链接动作例子:
Java:
PdfReader reader = new PdfReader(src);
HashMap<String,String> map = SimpleNamedDestination.getNamedDestination(reader, false);
SimpleNamedDestination.exportToXML(map, new FileOutputStream(dest),
"ISO8859-1", true);
reader.close();
C#:
PdfReader reader = new PdfReader(src);
Dictionary<string,string> map = SimpleNamedDestination
.GetNamedDestination(reader, false);
using (MemoryStream ms = new MemoryStream()) {
SimpleNamedDestination.ExportToXML(map, ms, "ISO8859-1", true);
ms.Position = 0;
using (StreamReader sr = new StreamReader(ms)) {
return sr.ReadToEnd();
}
}
The map
对象还可以用于以编程方式一一检查不同的命名目的地。请注意Boolean
检索指定目的地时使用的参数。可以使用 PDF 名称对象作为名称或使用 PDF 字符串对象来存储命名目标。这Boolean
参数表示是否想要前者(true
= 存储为 PDF 名称对象)或后者(false
= 存储为 PDF 字符串对象)命名目的地的类型。
命名目标是 PDF 文件中的预定义目标,可以通过其名称找到它们。虽然正式名称被命名为“目的地”,但有些人也将它们称为“书签”(但当我们在 PDF 上下文中说“书签”时,我们通常指的是大纲)。