1

我正在尝试使用 PDFSharp 读取 PDF 文档中所有注释的内容,同时跟踪它们所在的页面。我试图检索的“内容”在 PdfItem 的“结果视图”中,其中显示“扩展结果视图将枚举 IEnumerable”

我正在使用以下代码:

private void LoadCommentList(string file) //using pdfsharp
    {
        PdfSharp.Pdf.PdfDocument inputDoc = PdfSharp.Pdf.IO.PdfReader.Open(file, PdfDocumentOpenMode.Import);
        PdfSharp.Pdf.PdfDocument document = new PdfSharp.Pdf.PdfDocument();
        PdfSharp.Pdf.PdfPage page = new PdfSharp.Pdf.PdfPage();
        for (int i = 0; i < inputDoc.PageCount; i++)
        {
            page = inputDoc.Pages[i];
            page = document.AddPage(page);

            for (int p = 0; p < document.Pages[i].Annotations.Elements.Count; p++)
            {
                PdfItem textAnnot = document.Pages[i].Annotations.Elements.GetObject(p);
                //add specific item in "Results View" to CommentList here......
            }
        }
    }

如何以编程方式通读“结果视图”以便获取 PDF 注释的内容?

谢谢你的帮助。

4

1 回答 1

1

结果证明比我尝试的方法更容易实现这一点。不要使用 Pdfitem 对象,而是使用 PdfAnnotation 对象。从一开始就应该这样做。下面的代码示例:

private void LoadCommentList(string file) //using pdfsharp
    {
        PdfSharp.Pdf.PdfDocument inputDoc = PdfSharp.Pdf.IO.PdfReader.Open(file, PdfDocumentOpenMode.Import);
        PdfSharp.Pdf.PdfDocument document = new PdfSharp.Pdf.PdfDocument();
        PdfSharp.Pdf.PdfPage page = new PdfSharp.Pdf.PdfPage();

        for (int i = 0; i < inputDoc.PageCount; i++)
        {
            page = inputDoc.Pages[i];
            page = document.AddPage(page);

            for (int p = 0; p < document.Pages[i].Annotations.Elements.Count; p++)
            {
                PdfAnnotation textAnnot = document.Pages[i].Annotations[p];

                string content = textAnnot.Contents;
                if (content != null)
                {
                    CommentList.Add(content);
                }

            }
        }
    }
于 2013-04-22T17:04:29.063 回答