2

iTextSharp を使用して、pdf からすべてのテキストを取得しようとしています。現在、ページ上の実際のテキストのみを取得できます。ユーザーのコメントに含まれるテキストや、Adobe が呼び出す「付箋」は取得できません。これを行う方法はありますか?これまでのコードは次のとおりですが、空の文字列を取得するだけです:

    PdfReader pdfRead = new PdfReader(pdfFilePath);
    AcroFields form = pdfRead.AcroFields;            

    string txt = "";
    for (int page = 1; page <= pdfRead.NumberOfPages; ++page)
    {
           PdfDictionary pagedic = pdfRead.GetPageN(page);
           PdfArray annotarray = (PdfArray)PdfReader.GetPdfObject(pagedic.Get(PdfName.ANNOTS));

           if (annotarray == null || annotarray.Size == 0)
                 continue;

           foreach (PdfObject A in annotarray.ArrayList)
           {
                 PdfDictionary AnnotationDictionary = (PdfDictionary)PdfReader.GetPdfObject(A);

                 txt += AnnotationDictionary.GetAsString(PdfName.NOTE);
                 txt += "\n";
           }
     } 
4

2 に答える 2

3

C# については知りませんが、対応する部分はここで見つけることができます(この例で使用されているファイルはpages.pdf です)。この例の出力は次のとおりです。

Annotation 1
/Contents: This is a post-it annotation
/Subtype: /Text
/Rect: [36, 768, 56, 788]
/T: Example
Annotation 2
/C: [0, 0, 1]
/Border: [0, 0, 0]
/A: Dictionary
/Subtype: /Link
/Rect: [66.67, 785.52, 98, 796.62]

最初の注釈は付箋注釈 (ISO-32000-1 の言葉では、テキスト注釈) であり、探しているキーはisn ではPdfName.NOTEなくPdfName.T、タイトルとPdfName.CONTENTSコンテンツです。

于 2013-07-01T17:12:59.077 に答える