使用C#编辑pdf书签网址

时间:2011-12-30 04:25:03

标签: c# itextsharp bookmarks

我有一个pdf文件,其中有不同章节的书签(每章都使用书签链接到单独文件夹中的另一个pdf文件)。单击每个chaptername将在同一个父pdf文件中打开一个新的pdf。

我需要检索父pdf文件的书签网址并更改URL。我在代码下面使用它来检索书签属性(动作,文件,标题等),但是没有成功改变路径,因为它是字典键值对。

 IList<Dictionary<String, Object>> bmProperties= SimpleBookmark.GetBookmark(new PdfReader(new RandomAccessFileOrArray("http://XXXX/Shared%20Documents/Chapters.pdf"),
null));

        foreach (IDictionary<String, Object> bmProperty in bmProperties)
        {

            foreach (var fileProperty in bmProperty.Keys)
            {
                if (fileProperty == "File")
                {
                  // need the edit the value of Key-"File". Will it be possible to alter the value using pdfwriter
                 }
             }

2 个答案:

答案 0 :(得分:1)

您可以分两步完成此操作。

  1. 从上面的代码段中获取父PDF中的书签。迭代IList并进行任何必要的更改。
  2. 使用PdfReader再次打开父PDF。然后使用您在步骤1中更新的内容覆盖现有书签:
  3. PdfReader reader = new PdfReader(PARENT-PDF-FILE);
    using (PdfStamper stamper = new PdfStamper(reader, YOUR-STREAM)) {
      stamper.Outlines = bmProperties;
    }
    

    请注意,在第1步中,您必须考虑上述代码中的部分bmPropertyIDictionary如果您的书签具有嵌套级别,则值本身可能是Dictionary<String, Object>个对象。

答案 1 :(得分:0)

我对itextsharp对你的要求没有多少信心..但还有另一个PDFSharp库有一些好的书签功能......

PDFsharp bookmarks in text

http://www.pdfsharp.net/wiki/Bookmarks-sample.ashx

问候。