Ist es möglich, .NET DeflateStream für die PDF-Erstellung zu verwenden?

Ich spiele mit der Möglichkeit, PDF-Dateien über C # -Code zu erstellen. Ich habe mir die PDF-Spezifikationen angesehen und war in der Lage, eine funktionierende PDF-Datei zu erstellen, indem ich Datenfolgen nahm und sie mit der UTF8-Codierung in Byte-Arrays codierte.

Das Problem, auf das ich stoße, ist, wenn ich versuche, das zu verwendenDeflateStream auf den PDF-Stream-Objekten. Es scheint einfach nicht zu funktionieren:

Hier ist die Textversion des betreffenden PDF-Objekts (\ r \ n ist am Ende jeder Zeile, hier nur nicht sichtbar):

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

Wenn ich versuche das zu benutzenDeflateStream Klasse, um die Zeile zu komprimierenBT 70 50 TD /F1 12 Tf (Hello, world!) Tj ETscheint das pdf nicht zu funktionieren. Mir ist aufgefallen, dass viele andere Bibliotheken wie iTextSharp ihre eigene Implementierung der Deflate-Komprimierung verwenden.

Gibt es einen Grund, warum die Implementierung der DeflateStream-Klasse durch Microsoft nicht funktioniert? Benutze ich es falsch oder ist es falsch implementiert oder was?

Ich weiß, dass PDF-Dateien binär sind (kein Text), aber wenn ich nichts verschlüssele, ist es möglich, alles als Text anzuzeigen. Hier finden Sie die gesamte PDF - Datei als Referenz (auch im Klartext)\ r \ n ist am Ende jeder Zeile, hier nur nicht sichtbar):

%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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage