2014-08-29 134 views
0

我有一個問題,閱讀和顯示一些PDF的內容到RichTextBox。 我使用下面的代碼:iTextSharp無法讀取一些PDF文件

string fileName = @"C:\Users\PC\Desktop\SomePdf.pdf"; 
string str = string.Empty; 

PdfReader reader = new PdfReader(fileName); 

for (int i = 1; i <= reader.NumberOfPages; i++) 
{ 
    ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy(); 
    String s = PdfTextExtractor.GetTextFromPage(reader, i, its); 

    s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s))); 
    str = str + s; 
    rtbVsebina.Text = str; 
} 

reader.Close(); 

有些PDF文件可以被讀取和顯示爲RichTextBox和一些他們無法進行。對於那些不能閱讀的人,我只能得到空的RichTextBox,但有一些增加的行,因爲我會在鍵盤上按幾次「Enter」鍵。

有人知道什麼可能是錯的嗎?

+0

*發生了什麼?任何錯誤?沒有顯示? – Sayse 2014-08-29 09:10:32

回答

1

您正在將頁面內容與頁面標註混淆。

頁面內容是頁面內容流的一部分。它在頁面字典的/Contents條目中以及(可選)在外部對象(又名XObjects)中引用。通過代碼片段,您可以複製/粘貼您的問題,您正在提取此內容。

富文本框是許多類型的註釋之一。註釋是而不是頁面內容流的一部分。它們是從頁面字典的/Annots條目引用的。如果您想獲取註釋的內容,則需要向頁面詢問其註釋,而不是解析頁面的內容。例如參見Reading PDF Annotations with iText

在回答你的問題「我在做什麼錯誤」:你看錯了地方。