Propriedade THotPDF.LinearizeOutput
Controla se um documento recém-gerado é gravado em um layout linearizado ordenado por dependência para exibição rápida da primeira página em um transporte de intervalo de bytes HTTP
Declarações
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
Padrão
False
Layout de saída
Quando habilitado antes de BeginDoc e EndDoc, o HotPDF executa uma passagem de layout delimitada e, em seguida, grava o fluxo de destino diretamente na ordem linearizada
- O dicionário de parâmetros de linearização está contido nos primeiros 1024 bytes
- A primeira página e suas dependências privadas precedem as seções de páginas posteriores
- As dependências compartilhadas são agrupadas para que leitores com reconhecimento de intervalo possam evitar solicitações redundantes
- O fluxo de dica primário contém tabelas de dica de deslocamento de página e de objeto compartilhado
- Uma tabela de referência cruzada inicial oferece suporte ao acesso à primeira página e uma tabela de referência cruzada principal conclui o documento
Compatibilidade e limites
- A linearização exige PDF 1.2 ou posterior; o HotPDF atualiza uma versão selecionada mais antiga, a menos que
StrictVersionLockesteja habilitado, caso em que a gravação levanta uma exceção - O gravador linearizado emite tabelas de referência cruzada de texto tradicionais e objetos indiretos descompactados mesmo quando
UseXRefStreamouUseObjectStreamsestá habilitado - O formato da tabela de dica usa deslocamentos de 32 bits, então a saída em ou acima de 4 GiB é rejeitada com uma exceção clara
- O servidor web ou o transporte de armazenamento deve oferecer suporte a solicitações de intervalo de bytes para fornecer entrega rápida da primeira página
- Esta propriedade altera a saída do documento gerado e não carrega progressivamente um PDF remoto existente
Exemplo 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;
Exemplo 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();