2017-07-13 87 views
0

我想使用ItextSharp讀取PDF文件,但是我注意到包含在文本框中的文本未被讀取。ItextSharp讀取文本框文本

請有任何建議。

PdfDictionary pagedic = pdfRead.GetPageN(page); 
PdfArray annotarray = (PdfArray)PdfReader.GetPdfObject(pagedic.Get(PdfName.ANNOTS)); 
if (annotarray == null || annotarray.Size == 0) 
     continue; 
string Title = ""; 
string Title2 = ""; 
string Content2 = ""; 
foreach (PdfObject A in annotarray.ArrayList) 
{ 
    PdfDictionary AnnotationDictionary = (PdfDictionary)PdfReader.GetPdfObject(A); 
    Title2 += AnnotationDictionary.GetAsString(PdfName.T).ToString() + "\n"; 
    if (AnnotationDictionary.GetAsString(PdfName.CONTENTS)!=null) 
    { 
     Content2 += AnnotationDictionary.GetAsString(PdfName.CONTENTS).ToString() + "\n"; 
    } 
    if (AnnotationDictionary.GetAsString(PdfName.T)!=null) 
    { 
     Title += AnnotationDictionary.GetAsString(PdfName.T).ToString() + "\n"; 
    } 
    if (AnnotationDictionary.GetAsString(PdfName.T)!=null) 
    { 
     txt += AnnotationDictionary.GetAsString(PdfName.T).ToString() + "\n"; 
    }      
    if (AnnotationDictionary.GetAsString(PdfName.CONTENTS)!=null) 
    { 
     txt += PdfName.CONTENTS.ToString() + "\n"; 
    } 
    txt += AnnotationDictionary.GetAsString(PdfName.NOTE) + "\n"; 
    txt += AnnotationDictionary.GetAsString(PdfName.FREETEXT)+"\n"; 
} 
MessageBox.Show(txt); 
MessageBox.Show(Title); 
MessageBox.Show(Title2); 
MessageBox.Show(Content2); 
+0

你在說哪個文本框?請更準確地說明您所指的註釋類型。 –

+0

如果你正在談論文本字段,請扔掉你的代碼,並閱讀一些文檔。由窗口小部件註釋表示的類似文本的表單字段看起來像文本框,不要將它們的值存儲在'/ Contents'中,而是存儲在'/ V'中。此外,您不應該從窗口小部件註釋字典中獲取該值,而應從字段字典中獲取該值。用於獲取AcroForm中文本字段值的iText代碼比現在的要容易得多,但不清楚您是在討論文本字段還是文本註釋。 –

+0

你說得對,我正在閱讀文本字段。感謝您的評論。我會在完成後發佈它。 –

回答

0

的問題是,我正在閱讀的內容爲字符串, 它不應該。如下所示。 Content Text 所以使用ToUnicodeString()解決了這個問題。

annotation.GetAsString(PdfName.CONTENTS).ToUnicodeString();