我想打开一个 PDF 文档并添加一些书签。我有书签的标题,以及与之关联的页码(单击书签将转到文档中的指定页面)。
转到指定页面时,不应更改当前缩放级别。
VB.Net 示例会很棒,但也欢迎使用 C#。
我使用 iTextSharp 5.3。
我想打开一个 PDF 文档并添加一些书签。我有书签的标题,以及与之关联的页码(单击书签将转到文档中的指定页面)。
转到指定页面时,不应更改当前缩放级别。
VB.Net 示例会很棒,但也欢迎使用 C#。
我使用 iTextSharp 5.3。
作为一个 java 资源,我不会在你想要的确切代码中为你提供太多帮助,但通用算法也适用。对于没有孩子的单个书签(iText 使用术语孩子我认为你可以在 iTextSharp 中找到它)如下
private static List<HashMap<String, Object>> manipulatePdfBookMarkUtil(SortedMap<Integer, String> pgTtl, Rectangle rct) {
List<HashMap<String, Object>> mpBkMrkLst = null;
int itrCnt = 0;
if (pgTtl != null && !pgTtl.isEmpty()) {
mpBkMrkLst = new ArrayList<HashMap<String, Object>>();
for (Map.Entry<Integer, String> itrTtlPg : pgTtl.entrySet()) {
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("Title", itrTtlPg.getValue());
retMap.put("Action", "GoTo");
retMap.put("Page", itrTtlPg.getKey() + " FitH " + rct.getTop());
mpBkMrkLst.add(itrCnt, retMap);
itrCnt++;
}
}
return mpBkMrkLst;
}
List> Object-->List> 等等。我用过 iText(2.1.4)。我使用页码的排序映射作为键(itrTtlPg.getKey())和书签标题作为值(itrTtlPg.getValue())。Title-->是你想要的书签标题。Action-->simply 这是你想要采取的行动(正如价值“Go To”所暗示的那样)。"Page", pageNum + "FitH" + position;所以这意味着当您单击指定字符串(标题)的书签时,它将定位由pageNum指定的页面并在您提到的位置水平适应整个区域(这里的矩形对象是页面大小,所以顶部意味着它将水平放置在顶部)。FitV 也在那里,以垂直放置它,以便整个页面可以以窗口大小显示。另一件要提到的事情是你提到的保持缩放级别不变,你必须使用 FitH。