THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

Üst  Önceki  Sonraki

Metinsel xref ... trailer dizisi yerine PDF 1.5 /Type /XRef çapraz başvuru akışı yayar (ISO 32000-1 7.5.8). Kapsayıcı yükü PNG Up tahminiyle Flate-sıkıştırılır (/DecodeParms /Predictor 12), /W içindeki alan genişlikleri gerçek ofset aralığına uyarlanır (kesmek yerine 4 GiB'nin üzerine genişler) ve serbest liste boşlukları /Index alt bölümlerine küçülür; böylece seyrek nesne numaraları birer satır mala ödemez

 

Delphi sözdizimi:

property UseXRefStream: Boolean;

 

C++ sözdizimi:

__property bool UseXRefStream;

 

Açıklama

UseXRefStream true olduğunda EndDoc, eski metinsel xref tablosu + trailer + startxref dizisi yerine tek bir /Type /XRef dolaylı akış nesnesi yazar. Girdiler /W [1 4 2] kullanır: bir baytlık tip alanı, dört baytlık ofset (veya sıkıştırılmış nesne ana numarası) ve iki baytlık generation (veya sıkıştırılmış nesne indeksi). Tüm tablo FlateDecode ile sıkıştırılır ve büyük belgelerde xref yükünü genellikle 4-10 kat azaltır

 

XRef akışları UseObjectStreams özelliği için kesin ön koşuldur: /Type /ObjStm kapsayıcılarına işaret eden tip 2 sıkıştırılmış nesne girdilerini yalnızca ikili xref akışı kodlayabilir. UseXRefStream kapatılırsa kaydetme sırasında UseObjectStreams otomatik olarak devre dışı bırakılır

 

Varsayılan değer: false (isteğe bağlı - xref anahtar sözcüğünü sabit kodlayan araçlar ve PDF 1.4 / daha eski okuyucularla en yüksek uyumluluk için metinsel xref tablosunu korur)

Version değeri PDF 1.5'in altında olan bir belgede UseXRefStream true yapılırsa kaydetme sırasında sessizce yok sayılır - bunun yerine metinsel xref yayılır

 

PDF/A-1 de metinsel xref'i zorunlu kılar: ISO 19005-1, PDF 1.4 üzerine kuruludur ve 6.1.4 maddesi çapraz başvuru akışlarını yasaklar; bu yüzden PDFACompliance bir part-1 düzeyi belirttiğinde ('B' veya 'A' gibi) EndDoc, nasıl ayarlanmış olursa olsun kaydetme sırasında UseXRefStream ve UseObjectStreams'i temizler; PDF/A-2 ve PDF/A-3 PDF 1.7 üzerine kuruludur ve ikisini de desteklemeye devam eder

 

Kod örneği

HPDF := THotPDF.Create( nil );
try
  HPDF.FileName := 'c:\Output.pdf';
  HPDF.Version := pdf15;          // Required for XRef streams
  HPDF.UseXRefStream := true;     // Emit /Type /XRef instead of xref table
  HPDF.UseObjectStreams := true;  // Optional: also pack 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;

 

Ayrıca bkz.

UseObjectStreams, Compression, Version, PDF Filter Support