THotPDF.LinearizeOutput Property
새로 생성하는 문서를 HTTP 바이트 범위 전송에서 첫 페이지를 빠르게 표시할 수 있도록 의존성 순서의 선형화 레이아웃으로 기록할지 제어합니다
선언
// Delphi
property LinearizeOutput: Boolean;
// C++Builder
__property bool LinearizeOutput;
기본값
False
출력 레이아웃
BeginDoc와 EndDoc 사이에서 켜두면 HotPDF가 범위가 제한된 레이아웃 패스를 수행한 뒤, 대상 스트림에 선형화 순서대로 곧바로 기록합니다
- 선형화 파라미터 딕셔너리는 첫 1024바이트 안에 들어갑니다
- 첫 페이지와 그 전용 의존성이 뒤의 페이지 섹션보다 앞에 옵니다
- 공유 의존성은 묶여서, 범위를 인식하는 리더가 중복 요청을 피할 수 있게 합니다
- primary hint 스트림에는 페이지 오프셋·공유 객체 힌트 테이블이 담깁니다
- 앞쪽 교차 참조 테이블이 첫 페이지 접근을 지원하고, 메인 교차 참조 테이블이 문서를 완성합니다
호환성과 한계
- 선형화에는 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();