THotPDF.CompressDocument

THotPDF

 

Egenskaper  CompactFontSubsetting  EnableFontSubsetting

Slår på alla skrivalternativ som gör dokumentet mindre, med en enda brytare

 

Delphi-syntax:

property CompressDocument: Boolean;

 

C++-syntax:

__property bool CompressDocument;

 

Beskrivning

Sätt CompressDocument till true före BeginDoc för att skriva nästa dokument så litet som HotPDF kan göra det utan att ändra hur det ser ut. För det dokumentet slår BeginDoc på:

  • FlateDecode-komprimering av sidinnehåll och andra strömmar, på högsta komprimeringsnivå
  • En korsreferensström med object streams, som packar de flesta objekt i komprimerade behållare (ISO 32000-1 7.5.7 och 7.5.8); varje behållare rymmer högst 250 objekt i stället för 100, eftersom färre, större behållare komprimerar bättre. En gräns satt genom ConfigureAdaptiveObjectStreamPacking behålls
  • Teckensnittsdelmängdsbildning, med kompakta teckensnittsdelmängder, så att varje inbäddat teckensnitt bara behåller de glyfer dokumentet visar

Object streams kräver PDF 1.5. När Version är äldre höjs den till PDF 1.5 om inte versionen är låst; PDF/A-1-utdata behåller sin klassiska korsreferenstabell, så som standarden kräver

 

CompressDocument ändrar inte de inställningar du valt. EndDoc återställer värdena för Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, gränsen för antal objekt per behållare och versionshöjningen när dokumentet skrivits, så att nästa dokument utan CompressDocument skrivs som tidigare. Bilder behåller sina egna komprimeringsinställningar; inget samplas om eller komprimeras om med förlust

 

Egenskapen är av som standard. Ett tresidigt dokument med blandad engelsk och kinesisk text i Arial och SimSun sjunker från cirka 10 MB till cirka 20 KB, mest tack vare teckensnittsdelmängdsbildningen. Priset är att utdata blir svårare att redigera senare: delmängdsteckensnitt kan inte visa tecken som dokumentet inte använder, och komprimerade object streams går inte att läsa i en textredigerare

 

Exempel:

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

 

Se även: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument