|
Tuottaa PDF 1.5 -tyyppisen /Type /XRef -ristiviitevirran (ISO 32000-1 7.5.8) tekstimuotoisen xref ... trailer -sarjan sijaan. Säiliön sisältö pakataan Flate:lla PNG Up -ennustuksella (/DecodeParms /Predictor 12), /W:n kenttäleveydet mukautuvat todelliseen offset-alueeseen (leventymällä yli 4 GiB:n katkaisemisen sijaan), ja vapaan listan aukot tiivistyvät /Index-aliosioiksi, joten väljästi numeroidut objektinumerot eivät enää vie kutakin riviä
Delphi syntax:
property UseXRefStream: Boolean;
C++ syntax:
__property bool UseXRefStream;
Kuvaus
Kun UseXRefStream on true, metodi EndDoc kirjoittaa yhden epäsuoran /Type /XRef -virtakohteen perinteisen tekstimuotoisen xref-taulukon + trailer- + startxref-sarjan sijaan. Merkinnät käyttävät muotoa /W [1 4 2]: yksitavuinen tyyppikenttä, nelitavuinen siirtymä (tai pakatun objektin isäntänumero) ja kaksitavuinen sukupolvi (tai pakatun objektin indeksi). Koko taulukko on FlateDecode-pakattu, mikä tyypillisesti vähentää xref-kustannuksia 4–10-kertaisesti suurissa dokumenteissa
XRef-virrat ovat ehdoton edellytys ominaisuudelle UseObjectStreams: vain binäärinen xref-virta voi koodata tyypin 2 pakatun objektin merkinnät, jotka osoittavat kohteisiin /Type /ObjStm. Asetuksen UseXRefStream kytkeminen pois käytöstä poistaa automaattisesti ominaisuuden UseObjectStreams käytöstä tallennuksen yhteydessä
Oletusarvo: false (opt-in – säilyttää tekstimuotoisen xref-taulukon työkaluille, jotka kovakoodaavat avainsanan xref, sekä maksimaalisen yhteensopivuuden saavuttamiseksi PDF 1.4:n ja sitä aikaisempien lukulaitteiden kanssa)
Asetuksen UseXRefStream muuttaminen arvoksi true dokumentille, jonka Version on alle PDF 1.5, ohitetaan hiljaisesti tallennuksen yhteydessä – sen sijaan käytetään tekstimuotoista xref-taulukkoa
PDF/A-1 pakottaa myös tekstimuotoisen xref-taulukon: ISO 19005-1 perustuu PDF 1.4 -versioon ja lauseke 6.1.4 kieltää ristiviitevuolet, joten kun PDFACompliance nimeää osan 1 tason (kuten 'B' tai 'A'), EndDoc tyhjentää UseXRefStream- ja UseObjectStreams-asetukset tallennushetkellä riippumatta siitä, miten ne oli asetettu; PDF/A-2 ja PDF/A-3 perustuvat PDF 1.7 -versioon ja kunnioittavat molempia
Code Example
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;
See Also
UseObjectStreams, Compression, Version, PDF-suodatintuki
|