Compression Overview

Overview

HotPDF는 새 PDF 콘텐츠를 생성하는지, 외부 파일의 기존 스트림과 이미지를 읽는지에 따라 여러 압축 및 압축 해제 경로를 사용합니다

Main Compression Paths

  • FlateDecode: 생성되는 PDF 스트림에 THotPDF.Compression을 통해 사용되며, zlib 호환 모드의 zlib-ng를 기반으로 하고 사용 가능한 경우 64비트 런타임 SIMD dispatch를 적용합니다. 로드된 스트림의 고압축률 워크플로우에서는 예산이 제한된 Zopfli 패스를 추가할 수 있으며, 이는 최선의 zlib 결과보다 작을 때만 선택됩니다
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: HPDFLZW.pas를 통해 레거시 PDF와 TIFF 스타일 데이터를 지원합니다
  • DCT/JPEG: HotPDF 이미지 지원이 처리하는 표준 JPEG 이미지 워크플로우에 사용되며, NASM SIMD 가속 오브젝트를 포함한 libjpeg-turbo 3.1.90을 기반으로 합니다
  • JBIG2 및 JPEG2000: 원본 형식이 이미 해당 코덱을 사용하는 특수 이미지 워크플로우에서 사용할 수 있습니다

PDF 1.5+ structural size reduction

PDF 1.5 이상 출력에서는 HotPDF가 FlateDecode로 압축된 스트림 위에 구조적 압축 경로 두 가지를 추가로 겹쳐 적용할 수 있습니다. 둘 다 opt-in이며 함께 쓰면 잘 맞습니다

  • UseXRefStream: 텍스트 형식의 xref ... trailer 상호 참조 테이블을 압축된 /Type /XRef 스트림으로 대체합니다(ISO 32000-1 7.5.8). 대용량 문서에서 xref 오버헤드를 4~10배 줄입니다
  • UseObjectStreams: 작은 간접 사전(다중 페이지 문서, 주석, AcroForm 위젯, 구조 트리 요소, Optional Content 레이어)을 /Type /ObjStm 컨테이너 스트림에 묶어 넣고, type-2 xref 항목으로 참조합니다(ISO 32000-1 7.5.7). UseXRefStream도 함께 켜야 합니다. 그래픽만 있는 30페이지 smoke 문서는 두 옵션을 함께 사용하면 14502바이트에서 8488바이트로(-41.5%) 줄어듭니다
  • Copy decompression: DecompressForCopy and OriginallyCompressed describe how loaded-document copy paths materialize compressed source streams.

Related Units

  • HPDFZLib.pas: FlateDecode와 predictor를 인식하는 inflate 헬퍼
  • HPDFLZW.pas for LZW decompression
  • HPDFJBIG2.pas, HPDFJBIG2Codec.pas, HPDFJBIG2Enc.pas: JBIG2 인코딩과 디코딩
  • HPDFJpeg2000.pas와 HPDFOpenJpeg.pas: JPEG2000 관련 워크플로우

See Also