|
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
|