Czy możliwe jest użycie funkcji .NET DeflateStream do tworzenia plików PDF?

Bawię się możliwością tworzenia plików PDF za pomocą kodu C #. Patrzyłem na specyfikacje PDF i byłem w stanie stworzyć działający plik PDF, wykonując ciągi danych i kodując je w tablice bajtów przy użyciu kodowania UTF8.

Problem, na który wpadam, to próba użyciaDeflateStream na obiektach strumienia pdf. Po prostu nie działa:

Oto wersja tekstowa obiektu pdf, o którym mowa (r znajduje się na końcu każdej linii, po prostu tutaj niewidoczne):

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

Kiedy próbuję użyćDeflateStream klasa do kompresji liniiBT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET, plik pdf nie działa. Zauważyłem, że wiele innych bibliotek, takich jak iTextSharp, używa własnej implementacji kompresji Deflate.

Czy jest jakiś powód, dla którego implementacja klasy DeflateStream przez Microsoft nie działa? Czy używam go niepoprawnie, czy jest on nieprawidłowo wdrożony lub co?

Wiem, że pliki PDF są binarne (nie tekstowe), ale jeśli niczego nie szyfruję, można je wyświetlić jako tekst. Oto cały plik PDF w celach informacyjnych (również w postaci zwykłego tekstur znajduje się na końcu każdej linii, po prostu tutaj niewidoczne):

%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

questionAnswers(1)

yourAnswerToTheQuestion