THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Üst  Önceki  Sonraki

Disk üzerindeki PDF boyutunu kısmak için uygun koşullardaki dolaylı nesneleri PDF 1.5 /Type /ObjStm kapsayıcı stream'lerine paketler (ISO 32000-1 7.5.7).

 

Delphi sözdizimi:

property UseObjectStreams: Boolean;

 

C++ sözdizimi:

__property bool UseObjectStreams;

 

Açıklama

UseObjectStreams true olduğunda (UseXRefStream da true iken), EndDoc uygun koşullardaki her dolaylı nesneyi — sözlükler, diziler, sayılar, adlar, dizeler, boole'lar, null'lar — ISO 32000-1 7.5.7 uyarınca bir veya daha fazla /Type /ObjStm kapsayıcı stream'ine paketler. Çapraz başvuru stream'i, paketlenen nesnelere type-2 girdiler üzerinden (ana ObjStm nesne numarası + o stream içindeki girdi indeksi) atıfta bulunur; böylece tek tek N G obj ... endobj çerçeve baytları ve satır başına metinsel xref girdileri ortadan kalkar.

 

En kompakt PDF 1.5+ yazıcı hattı için UseXRefStream özelliğiyle doğal olarak eşleşir. ObjStm paketleyici; stream nesnelerini, şifreleme sözlüğünü ve trailer'ın işaret ettiği Catalog ile Info sözlüklerini sıkıştırılmamış bırakır; böylece en yalın PDF ayrıştırıcıları bile belge köklerini bulabilir ve içeriği çözebilir.

 

Varsayılan değer: false (isteğe bağlı).

UseObjectStreams'i true yapmak; UseXRefStream kapalıyken (type-2 girdiler spec uyarınca metinsel xref tablosunda temsil edilemez) veya Version PDF 1.5'in altındayken sessizce false'a düşer.

 

PDF/A-1 altında ayrıca zorla kapatılır: ISO 19005-1 (PDF 1.4, madde 6.1.4), sıkıştırılmış nesne stream'lerini üzerlerinde bindikleri çapraz başvuru stream'leriyle birlikte yasaklar; bu yüzden PDFACompliance bir part-1 düzeyi gösterdiğinde EndDoc klasik bir xref tablosu yazar. PDF/A-2 ve PDF/A-3 (PDF 1.7) ise bunu kullanılabilir bırakır

 

Kod Örneği

HPDF := THotPDF.Create( nil );
try
  HPDF.FileName := 'c:\Output.pdf';
  HPDF.Version := pdf15;          // Object streams require PDF 1.5+
  HPDF.UseXRefStream := true;     // ObjStm references need a /Type /XRef stream
  HPDF.UseObjectStreams := true;  // Pack indirect objects into /Type /ObjStm
  HPDF.Compression := cmFlateDecode;
  HPDF.BeginDoc;
  HPDF.CurrentPage.TextOut( 100, 100, 0, 'Compact PDF 1.5 output' );
  HPDF.EndDoc;
finally
  HPDF.Free;
end;

 

Boyut küçültme

Küçük dolaylı sözlüklerin baskın olduğu belgelerde (çok sayfalı belgeler, ek açıklamalar, AcroForm widget'ları, yapı ağacı öğeleri, Optional Content katmanları) tasarruf tipik olarak FlateDecode sonrası dosya boyutunun %20-40'ı kadardır. Yalnızca grafik içeren 30 sayfalık bir duman testi 14502 bayttan 8488 bayta küçülür (-%41,5).

 

Ayrıca bakın

UseXRefStream, Compression, Version, PDF filtre desteği