THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

Slår på alle skriveralternativene som gjør dokumentet mindre, med én bryter

 

Delphi-syntaks:

property CompressDocument: Boolean;

 

C++-syntaks:

__property bool CompressDocument;

 

Beskrivelse

Sett CompressDocument til true før BeginDoc for å skrive neste dokument like lite som HotPDF kan få det til uten å endre hvordan det ser ut. For det dokumentet slår BeginDoc på:

  • FlateDecode-komprimering av sideinnhold og andre strømmer, på maksimalt komprimeringsnivå
  • En cross-reference stream med object streams, som pakker de fleste objekter inn i komprimerte containere (ISO 32000-1 7.5.7 og 7.5.8); hver container rommer opptil 250 objekter i stedet for 100, siden færre, større containere komprimerer bedre. En grense satt gjennom ConfigureAdaptiveObjectStreamPacking beholdes
  • Fontsubsetting, med kompakte fontsubsetter, slik at hver innebygd font bare beholder glyffene dokumentet viser

Object streams krever PDF 1.5. Når Version er eldre, heves den til PDF 1.5 med mindre versjonen er låst; PDF/A-1-utdata beholder sin klassiske cross-reference-tabell, slik standarden krever

 

CompressDocument endrer ikke innstillingene du valgte. EndDoc gjenoppretter verdiene av Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, grensen for antall objekter per container og versjonshøyningen når dokumentet skrives, så neste dokument uten CompressDocument skrives som før. Bilder beholder sine egne komprimeringsinnstillinger; ingenting samples på nytt eller komprimeres om med tap

 

Egenskapen er av som standard. Et dokument på tre sider med blanding av engelsk og kinesisk tekst i Arial og SimSun går fra rundt 10 MB til rundt 20 KB, og mesteparten kommer fra fontsubsetting. Ulempen er at utdataene er vanskeligere å redigere senere: subsettfonte kan ikke vise tegn dokumentet ikke bruker, og komprimerte object streams kan ikke leses i en teksteditor

 

Eksempel:

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

 

Se også: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument