2009-11-19 40 views
0

我正在解析一個pdf文件...我將數據轉換爲字節數組,但它並不顯示完整文件.. 我想要使用任何lib或softy。 。ByteArray在C#中無法顯示文本框中的所有內容

 FileStream fs = new FileStream(fname, FileMode.Open); 
     BinaryReader br = new BinaryReader(fs); 

     int pos = 0; 
     int length = (int)br.BaseStream.Length; 

     byte [] file = br.ReadBytes(length); 

     String text = System.Text.ASCIIEncoding.ASCII.GetString(file); 

     displayFile.Text = text; 
+1

如果你能顯示一些代碼片段,這將是有幫助的。 – tranmq 2009-11-19 08:20:52

+0

你如何解析?也許你沒有閱讀完整的文件?還有一些其他信息... – tanascius 2009-11-19 08:21:49

回答

2

真的幫助,如果你願意付出更多的細節 - 包括一些代碼,最好是短,但完整的程序,演示了此問題。

我的猜想是,當你正在做轉換時,你最終會得到一些包含空字符('\ 0')的文本 - Windows窗體控件將其視爲字符串終結符。

例如,如果你使用:

label.Text = "hello\0there"; 

你只看到 「你好」。

現在你可能有這個問題,由於從一個字節數組轉換爲文本使用錯誤的編碼 - 但我們不能真正幫助您提供的小信息更多。

2

根據您的代碼示例,我會說問題在於您認爲PDF文件包含純ASCII文本,但情況並非如此。 PDF是一種複雜的格式,有些庫可以讓你解析它們。

做一個快速谷歌搜索:iTextSharp可以閱讀pdf格式。

1

只能將PDF解釋爲ASCII,不能將PDF轉換爲文本。您可能很幸運,其中一些文本實際上是ASCII,但您也可以期望一些非文本內容與ASCII不可區分。

取而代之的是使用解析PDF解決方案之一。以下是使用PDFBox和IKVM的一種方法:Naspinski.net: Parsing/Reading a PDF file with C# and Asp.Net to text

0

即使是純粹的Ascii集也包含大量不可打印,不可顯示的字符和控制字符。

像Jon說的那樣,字符串開頭的一個\0(NUL)終止了.NET中的所有內容。這種行爲在過去幾年中經歷過痛苦的經歷。像「鍾」和「退格」等控制字符會給你有趣的輸出。但不要指望聽到鈴聲響起:P。

+1

\ 0不會終止.NET本身的字符串 - 它會終止它在Windows窗體控件中。 – 2009-11-19 09:40:58

+0

@Jon:你說得對,我有在WinForm中使用log4net的經驗,並且日誌輸出到一個文件也被'\ 0'終止。我總是'責怪'.NET,現在我知道罪魁禍首。 – 2009-11-19 09:55:35

相關問題