THotPDF.LinearizeOutput Property
Điều khiển việc một tài liệu mới được tạo có được ghi theo bố cục linearized sắp xếp theo thứ tự phụ thuộc để hiển thị trang đầu nhanh qua một truyền tải HTTP byte-range hay không
Các khai báo
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
Mặc định
False
Bố cục đầu ra
Khi được bật trước BeginDoc và EndDoc, HotPDF thực hiện một lần bố cục có giới hạn và sau đó ghi luồng đích trực tiếp theo thứ tự linearized
- Từ điển tham số linearization nằm trong 1024 byte đầu tiên
- Trang đầu và các phụ thuộc riêng của nó đi trước các section trang về sau
- Các phụ thuộc dùng chung được nhóm lại nhờ vậy các trình đọc nhận biết range có thể tránh các yêu cầu dư thừa
- Hint stream chính chứa các bảng gợi ý page-offset và shared-object
- Một bảng cross-reference sớm hỗ trợ truy cập trang đầu và một bảng cross-reference chính hoàn thiện tài liệu
Tương thích và giới hạn
- Linearization yêu cầu PDF 1.2 trở lên; HotPDF nâng cấp một phiên bản cũ hơn đã chọn trừ khi
StrictVersionLockđược bật, trong trường hợp đó việc ghi raise một ngoại lệ - Trình ghi linearized phát ra các bảng cross-reference văn bản truyền thống và các indirect object chưa đóng gói kể cả khi
UseXRefStreamhoặcUseObjectStreamsđược bật - Định dạng hint-table dùng offset 32-bit, nên đầu ra từ 4 GiB trở lên bị từ chối với một ngoại lệ rõ ràng
- Máy chủ web hoặc truyền tải lưu trữ phải hỗ trợ các yêu cầu byte-range để cung cấp phân phối trang đầu nhanh
- Thuộc tính này thay đổi đầu ra tài liệu được tạo và không nạp tuyến tính một PDF từ xa hiện có
Ví dụ 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;
Ví dụ 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();