如何使用iTextSharp创建命名目的地?

时间:2017-08-30 09:36:14

标签: c# pdf itext

我正在尝试使用C#和iTextSharp 5库将PDF书签转换为命名目的地。不幸的是,iTextSharp似乎没有将命名目标写入目标PDF文件。

using System;
using System.Collections.Generic;
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;

namespace PDFConvert
{
    class Program
    {
        static void Main(string[] args)
        {

            String InputPdf = @"test.pdf";
            String OutputPdf = "out.pdf";

            PdfReader reader = new PdfReader(InputPdf);           

            var fileStream = new FileStream(OutputPdf, FileMode.Create, FileAccess.Write, FileShare.None);

            var list = SimpleBookmark.GetBookmark(reader);

            PdfStamper stamper = new PdfStamper(reader, fileStream);


            foreach (Dictionary<string, object> entry in list)
            {
                object o;
                entry.TryGetValue("Title", out o);
                String title = o.ToString();
                entry.TryGetValue("Page", out o);
                String location = o.ToString();
                String[] aLoc = location.Split(' ');
                int page = int.Parse(aLoc[0]);

                PdfDestination dest = new PdfDestination(PdfDestination.XYZ, float.Parse(aLoc[2]), float.Parse(aLoc[3]), float.Parse(aLoc[4]));

                stamper.Writer.AddNamedDestination(title, page, dest);
                // stamper.Writer.AddNamedDestinations(SimpleNamedDestination.GetNamedDestination(reader, false), reader.NumberOfPages);

            }
            stamper.Close();
            reader.Close();
        }

    }
}

我已尝试使用PdfWriter代替PdfStamper,结果相同。我肯定会调用stamper.Writer.AddNamedDestination(title, page, dest);,但在我的目标文件中没有NamedDestinations的迹象。

1 个答案:

答案 0 :(得分:1)

我找到了一个使用iText 7而不是5的解决方案。不幸的是,语法完全不同。在我的下面的代码中,我只考虑我的PDF的二级书签(&#34;大纲&#34;)。

libmosquittopp.so.1