THotPDF.CompressDocument

THotPDF

 

Ιδιότητες  CompactFontSubsetting  EnableFontSubsetting

Ενεργοποιεί κάθε επιλογή του writer που μικραίνει το έγγραφο, με έναν διακόπτη

 

Delphi syntax:

property CompressDocument: Boolean;

 

C++ syntax:

__property bool CompressDocument;

 

Περιγραφή

Ορίστε το CompressDocument σε true πριν από το BeginDoc για να γραφτεί το επόμενο έγγραφο όσο μικρότερο μπορεί το HotPDF, χωρίς να αλλάξει η εικόνα του. Για αυτό το έγγραφο, το BeginDoc ενεργοποιεί:

  • Συμπίεση FlateDecode του page content και των υπόλοιπων streams, στο μέγιστο επίπεδο συμπίεσης
  • Cross-reference stream με object streams, που πακετάρει τα περισσότερα objects σε συμπιεσμένα containers (ISO 32000-1 7.5.7 και 7.5.8)· κάθε container χωρά έως 250 objects αντί για 100, αφού λιγότερα, μεγαλύτερα containers συμπιέζονται καλύτερα. Ένα όριο που ορίζεται μέσω ConfigureAdaptiveObjectStreamPacking διατηρείται
  • Font subsetting, με compact font subsets, ώστε κάθε embedded font να κρατά μόνο τους γλυφούς που εμφανίζει το έγγραφο

Τα object streams απαιτούν PDF 1.5. Όταν η Version είναι παλαιότερη, ανεβαίνει σε PDF 1.5 εκτός αν η έκδοση είναι κλειδωμένη· η έξοδος PDF/A-1 κρατά τον κλασικό πίνακα cross-reference, όπως απαιτεί το πρότυπο

 

Το CompressDocument δεν αλλάζει τις ρυθμίσεις που διαλέξατε. Το EndDoc επαναφέρει τις τιμές των Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, το όριο objects ανά container και την αναβάθμιση έκδοσης μόλις γραφτεί το έγγραφο, οπότε το επόμενο έγγραφο χωρίς CompressDocument γράφεται όπως πριν. Οι εικόνες κρατούν τις δικές τους ρυθμίσεις συμπίεσης· τίποτα δεν επαναδειγματοληπτείται ούτε ξανασυμπιέζεται με απώλεια

 

Η ιδιότητα είναι απενεργοποιημένη από προεπιλογή. Ένα τρίσέλιδο έγγραφο με μεικτό αγγλικό και κινεζικό κείμενο σε Arial και SimSun πέφτει από περίπου 10 MB σε περίπου 20 KB, με το μεγαλύτερο μέρος από το font subsetting. Το τίμημα είναι ότι η έξοδος δυσκολεύει τη μετέπειτα επεξεργασία: τα subset fonts δεν μπορούν να εμφανίσουν χαρακτήρες που το έγγραφο δεν χρησιμοποιεί, και τα συμπιεσμένα object streams δεν διαβάζονται σε text editor

 

Παράδειγμα:

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