THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

Belgeyi küçülten tüm yazıcı seçeneklerini tek anahtarla açar

 

Delphi sözdizimi:

property CompressDocument: Boolean;

 

C++ sözdizimi:

__property bool CompressDocument;

 

Açıklama

Bir sonraki belgeyi, görünümünü değiştirmeden HotPDF'in ulaşabildiği en küçük hâliyle yazmak için BeginDoc'tan önce CompressDocument'i true yapın. BeginDoc o belge için şunları açar:

  • Page content ve diğer stream'lerin FlateDecode sıkıştırması, en yüksek sıkıştırma seviyesinde
  • Çoğu nesneyi sıkıştırılmış kapsayıcılara paketleyen, object stream'li bir cross-reference stream (ISO 32000-1 7.5.7 ve 7.5.8); her kapsayıcı 100 yerine en fazla 250 nesne tutar, çünkü daha az ama daha büyük kapsayıcı daha iyi sıkışır. ConfigureAdaptiveObjectStreamPacking ile ayarlanmış bir limit korunur
  • Compact font subset'leriyle font subsetting; böylece her gömülü font yalnızca belgenin gösterdiği glyph'leri tutar

Object stream'ler PDF 1.5 gerektirir. Version daha eskiyse sürüm kilitli olmadıkça PDF 1.5'e yükseltilir; PDF/A-1 çıktısı, standardın gerektirdiği gibi klasik cross-reference tablosunu korur

 

CompressDocument, seçtiğiniz ayarları değiştirmez. EndDoc, belge yazılırken Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, kapsayıcı başına nesne limiti ve sürüm yükseltmesinin değerlerini geri yükler; böylece CompressDocument olmadan yazılan sonraki belge eskisi gibi yazılır. Görseller kendi sıkıştırma ayarlarını korur; hiçbir şey yeniden örneklenmez veya kayıplı olarak yeniden sıkıştırılmaz

 

Property varsayılan olarak kapalıdır. Arial ve SimSun ile yazılmış karışık İngilizce ve Çince metinli üç sayfalık bir belge, yaklaşık 10 MB'den yaklaşık 20 KB'ye iner; payın çoğu font subsetting'den gelir. Bedeli, çıktının sonradan düzenlenmesinin zorlaşmasıdır: subset font'lar belgenin kullanmadığı karakterleri gösteremez, sıkıştırılmış object stream'ler de bir metin editöründe okunamaz

 

Örnek:

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

 

Ayrıca bkz.: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument