Propriété THotPDF.LinearizeOutput
Contrôle si un document nouvellement généré est écrit dans une mise en page linéarisée ordonnée par dépendance pour un affichage rapide de la première page sur un transport HTTP par plages d’octets
Déclarations
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
Par défaut
False
Mise en page de sortie
Lorsqu’activée avant BeginDoc et EndDoc, HotPDF effectue une passe de mise en page bornée puis écrit le flux de destination directement en ordre linéarisé
- Le dictionnaire de paramètres de linéarisation est contenu dans les 1024 premiers octets
- La première page et ses dépendances privées précèdent les sections de pages ultérieures
- Les dépendances partagées sont regroupées afin que les lecteurs sensibles aux plages puissent éviter les requêtes redondantes
- Le flux d’indications principal contient les tables d’indications d’offset de page et d’objets partagés
- Une table de références croisées précoce prend en charge l’accès à la première page et une table principale de références croisées complète le document
Compatibilité et limites
- La linéarisation exige PDF 1.2 ou ultérieur ; HotPDF met à niveau une version sélectionnée plus ancienne sauf si
StrictVersionLockest activé, auquel cas l’écriture lève une exception - Le rédacteur linéarisé émet des tables de références croisées texte traditionnelles et des objets indirects non empaquetés même lorsque
UseXRefStreamouUseObjectStreamsest activé - Le format des tables d’indications utilise des offsets 32 bits, donc une sortie à 4 Gio ou au-delà est rejetée avec une exception claire
- Le serveur web ou le transport de stockage doit prendre en charge les requêtes par plages d’octets pour fournir une livraison rapide de la première page
- Cette propriété modifie la sortie du document généré et ne charge pas progressivement un PDF distant existant
Exemple Delphi
PDF := THotPDF.Create(nil);
try
PDF.FileName := 'fast-view.pdf';
PDF.Version := pdf17;
PDF.LinearizeOutput := True;
PDF.BeginDoc;
PDF.Canvas.TextOut(72, 72, 'First page');
PDF.EndDoc;
finally
PDF.Free;
end;
Exemple C++Builder
std::unique_ptr<THotPDF> pdf(new THotPDF(nullptr));
pdf->FileName = L"fast-view.pdf";
pdf->Version = pdf17;
pdf->LinearizeOutput = true;
pdf->BeginDoc();
pdf->Canvas->TextOut(72, 72, L"First page");
pdf->EndDoc();