ByteArray в C # не может показать все содержимое в TextBox - PullRequest
0 голосов
/ 19 ноября 2009

Я анализирую файл PDF ... Я преобразовал данные в байтовый массив, но он не показывает полный файл .. Я не хочу использовать какую-либо библиотеку или программу.

        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;

Ответы [ 4 ]

2 голосов
/ 19 ноября 2009

Исходя из вашего примера кода, я бы сказал, что проблема в том, что вы предполагаете, что файл PDF содержит простой текст ascii, а это не так. PDF - сложный формат, и есть библиотеки, которые позволяют вам их анализировать.

Выполнение быстрого поиска в Google: iTextSharp можно прочитать в формате PDF.

2 голосов
/ 19 ноября 2009

Было бы действительно помочь, если бы вы дали больше подробностей - включая некоторый код, предпочтительно короткую, но полную программу, которая демонстрирует проблему.

My думаю, заключается в том, что когда вы выполняете преобразование, вы получаете текст, содержащий нулевой символ ('\ 0'), который элементы управления Windows Forms воспринимают как ограничитель строки.

Например, если вы используете:

label.Text = "hello\0there";

вы увидите только "привет".

Теперь у вас может возникнуть эта проблема из-за преобразования байтового массива в текст с использованием неправильной кодировки, но мы не можем больше помочь с небольшой предоставленной вами информацией.

1 голос
/ 19 ноября 2009

Вы не можете конвертировать PDF в текст, просто интерпретируя его как ASCII. Возможно, вам повезет, что часть текста на самом деле является ASCII, но вы также можете ожидать, что часть нетекстового содержимого будет неотличима от ASCII.

Вместо этого используйте одно из решений для анализа PDF. Вот один из способов использования PDFBox и IKVM: Naspinski.net: парсинг / чтение PDF-файла с C # и Asp.Net в текст

0 голосов
/ 19 ноября 2009

Четный Набор Ascii содержит множество непечатаемых, не отображаемых и управляющих символов.

Как сказал Джон, \0 (NUL) в начале строки завершает все в .NET. У меня был болезненный опыт с этим поведением много лет назад. Управляющие символы, такие как «звонок», «возврат» и т. Д., Дадут вам забавный вывод. Но не ожидайте услышать звон колокола: P.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...