THotPDF.CompressDocument

THotPDF

 

Eigenschaften  CompactFontSubsetting  EnableFontSubsetting

Aktiviert mit einem Schalter jede Schreiber-Option, die das Dokument kleiner macht

 

Delphi-Syntax:

property CompressDocument: Boolean;

 

C++-Syntax:

__property bool CompressDocument;

 

Beschreibung

Setzen Sie CompressDocument vor BeginDoc auf true, um das nächste Dokument so klein zu schreiben, wie HotPDF es hinbekommt, ohne das Aussehen zu verändern. Für dieses Dokument schaltet BeginDoc ein:

  • FlateDecode-Kompression von Seiteninhalt und anderen Streams auf maximaler Kompressionsstufe
  • Einen Cross-Reference-Stream mit Object Streams, der die meisten Objekte in komprimierte Container packt (ISO 32000-1 7.5.7 und 7.5.8); jeder Container fasst bis zu 250 Objekte statt 100, denn weniger, größere Container komprimieren besser. Ein über ConfigureAdaptiveObjectStreamPacking gesetztes Limit bleibt erhalten
  • Font-Subsetting mit kompakten Font-Subsets, sodass jede eingebettete Schrift nur die Glyphen behält, die das Dokument zeigt

Object Streams brauchen PDF 1.5. Ist Version älter, wird sie auf PDF 1.5 angehoben, sofern die Version nicht festgelockt ist; PDF/A-1-Ausgaben behalten ihre klassische Cross-Reference-Tabelle, wie der Standard es verlangt

 

CompressDocument ändert Ihre getroffenen Einstellungen nicht. EndDoc stellt die Werte von Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, das Objekte-pro-Container-Limit und die Versionsanhebung wieder her, sobald das Dokument geschrieben ist, sodass das nächste Dokument ohne CompressDocument wie bisher geschrieben wird. Bilder behalten ihre eigenen Kompressionseinstellungen; nichts wird neu abgetastet oder verlustbehaftet neu komprimiert

 

Die Eigenschaft ist standardmäßig aus. Ein dreiseitiges Dokument mit gemischtem englischen und chinesischen Text in Arial und SimSun schrumpft von etwa 10 MB auf etwa 20 KB, der Löwenanteil davon kommt vom Font-Subsetting. Der Preis: Die Ausgabe lässt sich später schwerer bearbeiten — Subset-Fonts können Zeichen nicht darstellen, die das Dokument nicht verwendet, und komprimierte Object Streams sind in einem Texteditor nicht lesbar

 

Beispiel:

PDF.CompressDocument := True;
        PDF.BeginDoc;
        PDF.CurrentPage.SetFont('SimSun', [], 11);
        PDF.CurrentPage.TextOut(40, 80, 0, 'Compressed output');
        PDF.EndDoc;

 

Siehe auch: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument