THotPDF.LinearizeOutput プロパティ
新しく生成されたドキュメントを、HTTP バイト範囲トランスポート上で高速な最初のページ表示のために、依存関係順序のリニアライズドレイアウトで書き込むかどうかを制御します
宣言
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
デフォルト
False
出力レイアウト
BeginDoc と EndDoc の前に有効にすると、HotPDF は境界付きレイアウトパスを実行し、リニアライズド順序で宛先ストリームに直接書き込みます
- リニアライゼーションパラメータ辞書は最初の 1024 バイトに含まれます
- 最初のページとそのプライベート依存関係は後のページセクションに先行します
- 共有依存関係はグループ化され、範囲認識リーダーが冗長なリクエストを回避できます
- プライマリヒントストリームにはページオフセットおよび共有オブジェクトヒントテーブルが含まれます
- 早期クロスリファレンステーブルが最初のページアクセスをサポートし、メインクロスリファレンステーブルがドキュメントを完成させます
互換性と制限
- リニアライゼーションは PDF 1.2 以降を必要とします。
StrictVersionLockが有効でない場合、HotPDF は古い選択されたバージョンをアップグレードします。有効な場合は書き込みが例外を発生させます - リニアライズドライターは、
UseXRefStreamやUseObjectStreamsが有効な場合でも、従来のテキストクロスリファレンステーブルとアンパックされた間接オブジェクトを出力します - ヒントテーブル形式は 32 ビットオフセットを使用するため、4 GiB 以上の出力は明確な例外で拒否されます
- 高速な最初のページ配信を提供するには、ウェブサーバーまたはストレージトランスポートがバイト範囲リクエストをサポートしている必要があります
- このプロパティは生成されたドキュメントの出力を変更し、既存のリモート PDF をプログレッシブに読み込むわけではありません
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;
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();