Laden...

PDF-Dateigröße verkleinern?

Letzter Beitrag vor 12 Jahren 4 Posts 1.776 Views
PDF-Dateigröße verkleinern?

Hey Community,

hier bin ich mal wieder und wieder mit iTextSharp. Und zwar habe ich jetzt soweit mit iTextSharp das meiste gemacht und bin auf das folgende Problem gestoßen:

Wenn ich PDFs, bzw. ihren Inhalt, miteinander verbinde (merge) entsteht, ab einer gewissen Vielfalt, eine unverhältnismäßige Vergrößerung der Dateigröße. Z.B.: Bei einer Datei mit 134 Seiten habe ich eine Größe von 62,7MB, was alles andere als optimal ist.

Nach langer Recherche habe ich rausgefunden, dass der Hauptgrund dafür die Schriftarten sind. Beim Verbinden der Seiten werden immer wieder die Schriftarten eingebettet und somit steigt die Dateigröße ins Unermäßliche. Die Lösungen von iTextSharp, wie SetFullCompression() oder Compression = BEST_COMPRESSION habe ich bereits probiert und es hat mir keinen nennenswerten Erfolg gebracht. Wenn ich diese Datei allerdings von Acrobat X optimieren lasse, schrumpft sie auf etwas zwischen 100-200KB.

Meine Fragen zu dem Thema sind nun:

  • Gibt es eine Möglichkeit in .NET eine PDF zu optimieren? (Quasi wie in Acrobat X)
  • Kann man verhindern, dass die Schriftarten immer wieder eingebettet werden?
  • Kommt man im Nachhinein an die Schriftarten ran?

Ich habe bereits alles Mögliche in Google eingetippt und bisher nichts sinnvolles finden können. Das einzige was zum Thema passte, war entweder Acrobat oder andere Entwickler mit dem selben Problem und leider ohne Lösung. Ich würde auch andere Libraries als iTextSharp nutzen wollen und auch, wenn es nicht anders geht, Geld ausgeben.

Da ich vertrauen in diese Community habe, hoffe ich dass ihr mir bald helfen könnt.

MfG
Kedishen

Hallo,

Font Embedding kannst du in deiner BaseFont Klasse kannst du folgenden Aufruf machen:

myBaseFont.setSubset(true)

Dann werden die Fonts so optimiert, dass das PDF immer gelesen werden kann aber nicht bearbeitet werden kann.
Dadurch schrumpft natürlich die Filegröße.

Lg
Dragon

Hey Dragon,

danke für die schnelle Antwort. Leider ist das in meinem Fall keine Lösung. Ich werde mich nächste Woche, falls bis dahin noch keine Antwort gefallen ist, mit ein paar Kollegen zusammensetzen und versuchen ein Code-Snippet reinzustellen.
Ich denke damit können die Leute mehr anfangen als mit reinen Angaben.

Das Problem ist, dass das ein Auftrag für eine Firma ist und ich deshalb momentan nicht einfach so einen Code-Teil preisgeben darf.

Ich werde mich dann nochmal melden und danke nochmal für die Antwort.

MfG
Kedishen

Nur als Hinweis: Außerhalb von .NET kannst Du mit NITRO-PDF PDF-Dateien optimieren.