Propiedad THotPDF.LinearizeOutput
Controla si un documento recién generado se escribe en una disposición linealizada ordenada por dependencias para una visualización rápida de la primera página sobre un transporte HTTP por rango de bytes
Declaraciones
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
Predeterminado
False
Disposición de salida
Cuando se habilita antes de BeginDoc y EndDoc, HotPDF realiza un pase de disposición acotado y luego escribe el flujo de destino directamente en orden linealizado
- El diccionario de parámetros de linealización se encuentra en los primeros 1024 bytes
- La primera página y sus dependencias privadas preceden a las secciones de páginas posteriores
- Las dependencias compartidas se agrupan para que los lectores con conocimiento de rango puedan evitar solicitudes redundantes
- El flujo de pista principal contiene tablas de pista de desplazamiento de página y de objetos compartidos
- Una tabla de referencias cruzadas temprana admite el acceso a la primera página y una tabla principal de referencias cruzadas completa el documento
Compatibilidad y límites
- La linealización requiere PDF 1.2 o posterior; HotPDF actualiza una versión seleccionada más antigua a menos que
StrictVersionLockesté habilitado, en cuyo caso la escritura genera una excepción - El escritor linealizado emite tablas de referencias cruzadas tradicionales en texto y objetos indirectos desempaquetados incluso cuando
UseXRefStreamoUseObjectStreamsestán habilitados - El formato de tabla de pista usa desplazamientos de 32 bits, por lo que la salida en o por encima de 4 GiB se rechaza con una excepción clara
- El servidor web o el transporte de almacenamiento deben admitir solicitudes por rango de bytes para proporcionar una entrega rápida de la primera página
- Esta propiedad cambia la salida del documento generado y no carga progresivamente un PDF remoto existente
Ejemplo en 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;
Ejemplo en 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();