THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

스위치 하나로 문서를 작게 만드는 기록기 옵션을 모두 켭니다

 

Delphi syntax:

property CompressDocument: Boolean;

 

C++ syntax:

__property bool CompressDocument;

 

Description

BeginDoc 전에 CompressDocument를 true로 설정하면 다음 문서를 겉모습은 그대로 둔 채 HotPDF가 만들 수 있는 가장 작은 크기로 기록합니다. 해당 문서에 대해 BeginDoc이 켜는 항목은 다음과 같습니다

  • 페이지 콘텐츠와 다른 스트림을 최대 압축 레벨로 FlateDecode 압축합니다
  • 객체 스트림과 결합된 cross-reference 스트림을 씁니다. 대부분의 객체가 압축 컨테이너에 담깁니다(ISO 32000-1 7.5.7 및 7.5.8). 각 컨테이너는 100개 대신 최대 250개의 객체를 담는데, 더 크고 적은 컨테이너가 더 잘 압축되기 때문입니다. ConfigureAdaptiveObjectStreamPacking으로 설정한 한도는 유지됩니다
  • 폰트 서브셋을 켜고 컴팩트 폰트 서브셋까지 적용해 각 임베드 폰트가 문서가 보여 주는 글리프만 담도록 합니다

객체 스트림에는 PDF 1.5가 필요합니다. Version이 더 낮으면 버전이 잠겨 있지 않은 한 PDF 1.5로 올려 기록하고, PDF/A-1 출력은 표준이 요구하는 대로 기존 방식의 cross-reference 테이블을 유지합니다

 

CompressDocument는 직접 고른 설정을 바꾸지 않습니다. EndDoc은 문서를 기록할 때 Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, 컨테이너당 객체 수 한도와 버전 올림을 복원하므로, 다음에 CompressDocument 없이 쓰는 문서는 이전과 같은 방식으로 기록됩니다. 이미지는 자체 압축 설정을 유지하며, 어떤 것도 리샘플링하거나 손실로 재압축하지 않습니다

 

이 프로퍼티는 기본적으로 꺼져 있습니다. Arial과 SimSun으로 영어와 한자를 섞어 쓴 3페이지 문서는 약 10 MB에서 약 20 KB로 줄어들며, 대부분은 폰트 서브셋 덕분입니다. 대신 결과물을 나중에 편집하기는 더 어렵습니다. 서브셋 폰트는 문서가 쓰지 않는 문자를 표시할 수 없고, 압축된 객체 스트림은 텍스트 편집기에서 읽을 수 없습니다

 

Example:

PDF.CompressDocument := True;
        PDF.BeginDoc;
        PDF.CurrentPage.SetFont('SimSun', [], 11);
        PDF.CurrentPage.TextOut(40, 80, 0, 'Compressed output');
        PDF.EndDoc;

 

See also: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument