THotPDF.CompressDocument

THotPDF

 

Proprietà  CompactFontSubsetting  EnableFontSubsetting

Attiva con un solo interruttore tutte le opzioni di scrittura che rendono il documento più piccolo

 

Sintassi Delphi:

property CompressDocument: Boolean;

 

Sintassi C++:

__property bool CompressDocument;

 

Descrizione

Impostare CompressDocument a true prima di BeginDoc per scrivere il prossimo documento piccolo quanto HotPDF riesce a farlo senza cambiarne l'aspetto. Per quel documento, BeginDoc attiva:

  • Compressione FlateDecode del contenuto di pagina e degli altri stream, al livello di compressione massimo
  • Un cross-reference stream con object stream, che impacchetta la maggior parte degli oggetti in contenitori compressi (ISO 32000-1 7.5.7 e 7.5.8); ogni contenitore contiene fino a 250 oggetti invece di 100, dato che contenitori meno numerosi e più grandi si comprimono meglio. Un limite impostato tramite ConfigureAdaptiveObjectStreamPacking viene conservato
  • Subsetting dei font, con compact font subsets, così ogni font incorporato conserva solo i glifi che il documento mostra

Gli object stream richiedono PDF 1.5. Quando Version è più vecchia viene portata a PDF 1.5, a meno che la versione sia bloccata; l'output PDF/A-1 conserva la sua classica tabella cross-reference, come richiede lo standard

 

CompressDocument non modifica le impostazioni scelte. EndDoc ripristina i valori di Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, il limite di oggetti per contenitore e l'innalzamento di versione quando il documento viene scritto, così il prossimo documento senza CompressDocument viene scritto come prima. Le immagini conservano le proprie impostazioni di compressione; nulla viene ricampionato o ricompresso con perdita

 

La proprietà è disattivata per impostazione predefinita. Un documento di tre pagine con testo misto inglese e cinese in Arial e SimSun scende da circa 10 MB a circa 20 KB, per la maggior parte grazie al subsetting dei font. Il rovescio della medaglia è che l'output è più difficile da modificare in seguito: i font di subset non possono mostrare caratteri che il documento non usa, e gli object stream compressi non sono leggibili in un editor di testo

 

Esempio:

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

 

Vedi anche: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument