THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

Włącza jednym przełącznikiem każdą opcję zapisu, która pomniejsza dokument

 

Delphi syntax:

property CompressDocument: Boolean;

 

C++ syntax:

__property bool CompressDocument;

 

Description

Ustaw CompressDocument na true przed BeginDoc, żeby kolejny dokument został zapisany tak mało, jak HotPDF potrafi, bez zmiany jego wyglądu. Dla tego dokumentu BeginDoc włącza:

  • kompresję FlateDecode treści stron i innych strumieni, na maksymalnym poziomie kompresji
  • strumień cross-reference z object streams, który pakuje większość obiektów do skompresowanych kontenerów (ISO 32000-1 7.5.7 i 7.5.8); każdy kontener mieści do 250 obiektów zamiast 100, bo mniej, ale większe kontenery kompresują się lepiej. Limit ustawiony przez ConfigureAdaptiveObjectStreamPacking jest zachowywany
  • subsetowanie czcionek, z kompaktowymi podzbiorami czcionek, więc każda osadzona czcionka zachowuje tylko glify pokazywane przez dokument

Object streams wymagają PDF 1.5. Gdy Version jest starsza, jest podnoszona do PDF 1.5, chyba że wersja jest zablokowana; wyjście PDF/A-1 zachowuje klasyczną tabelę cross-reference, tego wymaga standard

 

CompressDocument nie zmienia wybranych przez ciebie ustawień. EndDoc przywraca wartości Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, limit obiektów na kontener oraz podniesienie wersji, gdy dokument jest zapisywany, więc kolejny dokument bez CompressDocument jest zapisywany jak wcześniej. Obrazy zachowują własne ustawienia kompresji; nic nie jest resamplowane ani rekompresowane ze stratą

 

Właściwość jest domyślnie wyłączona. Trójstronicowy dokument z mieszaniną tekstu angielskiego i chińskiego w Arial i SimSun spada z około 10 MB do około 20 KB, w większości dzięki subsetowaniu czcionek. Ceną jest trudniejsza późniejsza edycja wyjścia: czcionki podzbiorów nie pokażą znaków, których dokument nie używa, a skompresowane object streams nie są czytelne w edytorze tekstu

 

Example:

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

 

See also: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument