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();