THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Góra  Poprzedni  Następny

Pakuje kwalifikujące się obiekty pośrednie do strumieni kontenerów PDF 1.5 /Type /ObjStm (ISO 32000-1 7.5.7), aby zmniejszyć rozmiar PDF na dysku

 

Składnia Delphi:

property UseObjectStreams: Boolean;

 

Składnia C++:

__property bool UseObjectStreams;

 

Opis

Gdy UseObjectStreams ma wartość true (i UseXRefStream także ma wartość true), EndDoc pakuje każdy kwalifikujący się obiekt pośredni - słowniki, tablice, liczby, nazwy, ciągi, wartości logiczne, null - do jednego lub wielu strumieni kontenerów /Type /ObjStm zgodnie z ISO 32000-1 7.5.7. Strumień odsyłaczy następnie wskazuje spakowane obiekty przez wpisy typu 2 (numer obiektu hosta ObjStm + indeks wpisu w tym strumieniu), więc bajty obramowania poszczególnych N G obj ... endobj i tekstowe wiersze xref są eliminowane

 

Naturalnie współpracuje z właściwością UseXRefStream, tworząc najbardziej kompaktowy potok zapisu PDF 1.5+. Paker ObjStm pozostawia obiekty strumieni, słownik szyfrowania oraz wskazywane z trailera słowniki Catalog i Info bez kompresji, aby nawet minimalne parsery PDF nadal mogły zlokalizować korzenie dokumentu i odszyfrować zawartość

 

Wartość domyślna: false (opt-in).

Ustawienie UseObjectStreams na true po cichu obniża się do false, gdy UseXRefStream jest wyłączone (wpisów typu 2 nie da się przedstawić w tekstowej tabeli xref zgodnie ze specyfikacją) lub gdy Version jest poniżej PDF 1.5

 

Przykład kodu

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;

 

Zmniejszenie rozmiaru

W dokumentach zdominowanych przez małe słowniki pośrednie (dokumenty wielostronicowe, adnotacje, widgety AcroForm, elementy drzewa struktury, warstwy Optional Content) oszczędność zwykle wynosi 20-40% rozmiaru pliku po FlateDecode. 30-stronicowy test smoke z samą grafiką zmniejsza się z 14502 bajtów do 8488 bajtów (-41.5%)

 

Zobacz też

UseXRefStream, Compression, Version, PDF Filter Support