打开PDF文档并为其添加书签

时间:2012-10-07 21:14:01

标签: c# vb.net pdf itextsharp itext

我想打开一个PDF文档并添加一些书签。 我有书签的标题,以及与它们相关的页码(点击 在书签上将转到文档中的指定页面。

当转到指定页面时,当前缩放级别应该更改。

VB.Net的例子很棒,但C#也很受欢迎。

我使用iTextSharp 5.3。

1 个答案:

答案 0 :(得分:1)

作为一个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;
    }

列表&gt;          对象 - &GT;列表&gt;我等用过iText(2.1.4)。 我使用了页码的有序映射作为键(itrTtlPg.getKey())和书签标题作为值(itrTtlPg.getValue())。 标题 - &gt;是您想要的书签标题。 操作 - &gt;简单这是您要采取的操作(值为“转到”意味着)。 “Page”,pageNum +“FitH”+位置;这意味着当您单击指定字符串(标题)的书签时,它将定位pageNum指定的页面并将整个区域水平放置在您提到的位置(此处矩形对象是页面大小) ,顶部意味着它将水平放置在顶部).FitV也在那里,垂直安装,以便整个页面可以在窗口大小显示。另外要提到的另一件事,你提到保持缩放级别完整,你必须使用FitH。 如果上面的文本可以帮助你,你可以根据自己的意愿编写VB / C#代码。如果你想看书签作为大纲,也可以设置setViewerPreferences(PdfWriter.PageModeUseOutlines)。