THotPDF.CompressDocument

THotPDF

 

Proprietăți  CompactFontSubsetting  EnableFontSubsetting

Activează, dintr-un singur comutator, toate opțiunile de scriere care fac documentul mai mic

 

Sintaxă Delphi:

property CompressDocument: Boolean;

 

Sintaxă C++:

__property bool CompressDocument;

 

Descriere

Setați CompressDocument pe true înainte de BeginDoc pentru ca documentul următor să fie scris cât de mic poate face HotPDF fără să-i schimbe aspectul. Pentru acel document, BeginDoc activează:

  • Compresie FlateDecode a conținutului paginilor și a celorlalte fluxuri, la nivelul maxim de compresie
  • Un cross-reference stream cu object streams, care împachetează majoritatea obiectelor în containere comprimate (ISO 32000-1 7.5.7 și 7.5.8); fiecare container ține până la 250 de obiecte în loc de 100, deoarece mai puține containere, mai mari, se comprimă mai bine. O limită stabilită prin ConfigureAdaptiveObjectStreamPacking este păstrată
  • Font subsetting, cu subseturi compacte de fonturi, astfel încât fiecare font încorporat păstrează doar glifele pe care documentul le afișează

Object streams au nevoie de PDF 1.5. Când Version este mai veche, este ridicată la PDF 1.5, cu excepția cazului în care versiunea este blocată; output-ul PDF/A-1 își păstrează tabela clasică de cross-reference, așa cum cere standardul

 

CompressDocument nu schimbă setările pe care le-ați ales. EndDoc restabilește valorile lui Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, limita de obiecte per container și ridicarea de versiune în momentul scrierii documentului, astfel încât documentul următor, scris fără CompressDocument, rezultă ca înainte. Imaginile își păstrează propriile setări de compresie; nimic nu este reeșantionat sau recomprimat cu pierderi

 

Proprietatea este dezactivată implicit. Un document de trei pagini cu text amestecat englezesc și chinezesc în Arial și SimSun scade de la circa 10 MB la circa 20 KB, cea mai mare parte din font subsetting. Contrapartida este că output-ul este mai greu de editat ulterior: fonturile subsetate nu pot afișa caractere pe care documentul nu le folosește, iar object streams comprimate nu sunt lizibile într-un editor de text

 

Exemplu:

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

 

Vezi și: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument