DeflateStream и PDF
От: bober_maniac Россия http://bober-maniac.livejournal.com/
Дата: 04.01.13 18:27
Оценка:
Как, наверное, многие знают, в PDF одним из возможных кодеков для внутренних потоков является Deflate.

Я пытаюсь разжать внутренний поток с помощью DeflateStream из BCL, но в результате получаю исключение вида InvalidDataException.

Я пытаюсь понять, как работает DeflateStream и пишу такой код:

var streamd = "2 J\r\nBT\r\n/F1 12 Tf\r\n0 Tc\r\n0 Tw\r\n72.5 712 TD\r\n" +
                         "[(Unfiltered streams can be read easily) 65 (, )] TJ\r\n"+
                         "\r\n0 -14 TD[(b) 20 (ut generally tak) 10 (e more space than \\311)] TJ\r\n" +
                         "T* (compressed streams.) Tj\r\n" +
                         "0 -28 TD\r\n[(Se) 25 (v) 15 (eral encoding methods are a) 20 (v) 25 (ailable in PDF) 80 (.)] TJ"+
                         "0 -14 TD\r\n(Some are used for compression and others simply) Tj\r\n" +
                         "T* [(to represent binary data in an ) 55 (ASCII format.)] TJ\r\n"+
                         "T* (Some of the compression filters are \\\r\n" +
                         "suitable ) Tj\r\nT* (for both data and images, while others are \\\r\n"+
                         "suitable only ) Tj\r\nT* (for continuous-tone images.) Tj\r\nET";

            MemoryStream output = new MemoryStream();
            DeflateStream zip = new DeflateStream(output, CompressionMode.Compress);
            StreamWriter writer = new StreamWriter(zip);
            writer.Write(streamd);
            writer.Flush();
            zip.Flush();
            output.Flush();

            output.Seek(0, SeekOrigin.Begin);
            StreamReader reader = new StreamReader(output);
            Console.WriteLine(reader.ReadToEnd());
            Console.ReadLine();


В консоли пустота. Ставлю брекпоинт на output.Seek — в потоке 0 байт.

Может быть, кто-нибудь мне разъяснит три момента:
1. Где я мудак?
2. Почему DeflateStream не работает с PDF?
3. Почему не работает мой тестовый пример?
deflate deflatestream pdf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.