Можно ли использовать .NET DeflateStream для создания PDF?

Я играю с возможностью создавать PDF-файлы с помощью кода C #. Я просматривал спецификации PDF и смог создать работающий файл PDF, сделав путем сбора строк данных и кодирования их в байтовые массивы с использованием кодировки UTF8.

Проблема, с которой я сталкиваюсь, заключается в том, когда я пытаюсь использоватьDeflateStream на объектах потока PDF. Это просто не похоже на работу:

Вот текстовая версия рассматриваемого PDF-объекта (\ Г \ п находится в конце каждой строки, просто здесь не видно):

5 0 obj
<</Length 45>>
stream
BT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET
endstream
endobj

Когда я пытаюсь использоватьDeflateStream класс для сжатия линииBT 70 50 TD /F1 12 Tf (Hello, world!) Tj ETPDF, кажется, не работает. Я заметил, что многие другие библиотеки, такие как iTextSharp, используют собственную реализацию сжатия Deflate.

Есть ли какая-то причина, по которой реализация Microsoft класса DeflateStream не работает? Я использую его неправильно или он реализован неправильно или как?

Я знаю, что PDF-файлы являются двоичными (не текстовыми), но если я ничего не шифрую, то все это можно просмотреть как текст. Вот весь PDF-файл для справки (в текстовом виде, также\ Г \ п находится в конце каждой строки, просто здесь не видно):

%PDF-1.7
1 0 obj
<</Type /Catalog /Pages 2 0 R>>
endobj
2 0 obj
<</Type /Pages /MediaBox [ 0 0 200 200 ] /Count 1 /Kids [ 3 0 R ]>>
endobj
3 0 obj
<</Type /Page /Parent 2 0 R /Resources <</Font <</F1 4 0 R>>>> /Contents 5 0 R>>
endobj
4 0 obj
<</Type /Font /Subtype /Type1 /BaseFont /Times-Roman>>
endobj
5 0 obj
<</Length 45>>
stream
BT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET
endstream
endobj
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000067 00000 n
0000000153 00000 n
0000000252 00000 n
0000000325 00000 n
trailer
<</Size 6/Root 1 0 R>>
startxref
422
%%EOF

Ответы на вопрос(1)

Ваш ответ на вопрос