THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

Slår alle de writer-tilvalg, der gør dokumentet mindre, til med én kontakt

 

Delphi-syntaks:

property CompressDocument: Boolean;

 

C++-syntaks:

__property bool CompressDocument;

 

Beskrivelse

Sæt CompressDocument til true før BeginDoc for at skrive det næste dokument så lille, som HotPDF kan gøre det, uden at ændre dets udseende. For dét dokument tænder BeginDoc for:

  • FlateDecode-komprimering af sideindhold og andre streams på det maksimale komprimeringsniveau
  • En cross-reference stream med object streams, som pakker de fleste objekter ned i komprimerede beholdere (ISO 32000-1 7.5.7 og 7.5.8); hver beholder rummer op til 250 objekter i stedet for 100, da færre, større beholdere komprimerer bedre. En grænse, der er sat med ConfigureAdaptiveObjectStreamPacking, bevares
  • Font subsetting med kompakte font-subsets, så hver indlejret font kun beholder de glyffer, dokumentet viser

Object streams kræver PDF 1.5. Når Version er ældre, hæves den til PDF 1.5, medmindre versionen er låst; PDF/A-1-output beholder sin klassiske cross-reference-tabel, som standarden kræver

 

CompressDocument ændrer ikke de indstillinger, du har valgt. EndDoc gendanner værdierne af Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, grænsen for objekter pr. beholder og versionshævelsen, når dokumentet skrives, så det næste dokument uden CompressDocument skrives som før. Billeder beholder deres egne komprimeringsindstillinger; intet resamples eller rekomprimeres med tab

 

Egenskaben er slået fra som standard. Et tresidet dokument med blandet engelsk og kinesisk tekst i Arial og SimSun falder fra omkring 10 MB til omkring 20 KB, mest takket være font subsetting. Prisen er, at outputtet er sværere at redigere senere: subset-fonte kan ikke vise tegn, som dokumentet ikke bruger, og komprimerede object streams kan ikke læses 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