Class AdvancedCompressionOptions


  • public class AdvancedCompressionOptions
    extends Object
    Configuration for the advanced compression pipeline.

    Recommended starting points:

    
     // Web/email — strongest size reduction
     AdvancedCompressionOptions web = new AdvancedCompressionOptions();
     web.setJpegQuality(70);
     web.setTargetImageDpi(150);
     web.setRemoveStructureTree(true);
    
     // Print quality
     AdvancedCompressionOptions print = new AdvancedCompressionOptions();
     print.setJpegQuality(90);
     print.setTargetImageDpi(300);
     

    Mirrors the .NET AdvancedCompressionOptions class shipped in IronPdf 2026.6.

    • Constructor Detail

      • AdvancedCompressionOptions

        public AdvancedCompressionOptions()
    • Method Detail

      • getJpegQuality

        public Integer getJpegQuality()
        JPEG quality used when re-encoding images during optimization (1-100). When set, automatically enables image optimization.

        Recommended settings:

        • null — No image re-encoding (default)
        • 95 — Archival, minimal artifacts
        • 85 — High quality
        • 70 — Balanced, good for general use
        • 50 — Web/email; visible artifacts, smaller files

        Where the re-encoding happens depends on getTargetImageDpi():

        • targetImageDpi set (default 150): each image is downsampled and re-encoded at this quality. optimizeImages is skipped to avoid double JPEG encoding.
        • targetImageDpi = null: optimizeImages re-encodes images at this quality without changing pixel dimensions.
      • getTargetImageDpi

        public Integer getTargetImageDpi()
        Target DPI for image downsampling during advanced compression. Images whose effective rendered DPI exceeds this value are box-filter downsampled to targetImageDpi before re-encoding.

        Recommended values:

        • 300 — Print quality, lossless to the eye at normal viewing distance
        • 200 — Crisp on high-DPI / retina screens
        • 150 — Default; best size/quality balance for screen + email
        • 96 — Aggressive; soft text but still readable
        • null — Disabled; preserve original resolution (largest file)

        Lossy. Once an image is downsampled it cannot be restored to its original resolution.

      • isHighQualityImageSubsampling

        public boolean isHighQualityImageSubsampling()
        4:4:4 chroma subsampling when true (better color), 4:1:1 when false (smaller).
      • isRemoveStructureTree

        public boolean isRemoveStructureTree()
        Remove the document structure tree before compression.
      • isCompressStreams

        public boolean isCompressStreams()
        Compress content streams using zlib/Flate.
      • isRecompressFlate

        public boolean isRecompressFlate()
        Re-compress already Flate-encoded streams using getCompressionLevel().
      • getCompressionLevel

        public int getCompressionLevel()
        zlib compression level (0-9). Default 9.
      • getObjectStreams

        public ObjectStreamMode getObjectStreams()
        Object stream mode used when writing the output PDF.
      • isRemoveUnreferencedResources

        public boolean isRemoveUnreferencedResources()
        Drop indirect objects that are not referenced from the document catalog.
      • isCoalesceContents

        public boolean isCoalesceContents()
        Merge a page's separate content streams so they Flate-compress together.
      • isDecodeGeneralizedStreams

        public boolean isDecodeGeneralizedStreams()
        Decode generalized filters (FlateDecode, LZW, ASCII85, ASCIIHex) before re-encoding.
      • getOptimizeImagesMinWidth

        public int getOptimizeImagesMinWidth()
        Minimum image width (in pixels) for image optimization to apply.
      • getOptimizeImagesMinHeight

        public int getOptimizeImagesMinHeight()
        Minimum image height (in pixels) for image optimization to apply.
      • getOptimizeImagesMinArea

        public int getOptimizeImagesMinArea()
        Minimum image area (width × height pixels) for image optimization to apply.
      • pdfiumWillReEncode

        public boolean pdfiumWillReEncode()
        Returns true if pdfium-side image re-encoding is engaged (because a positive targetImageDpi was set). The qpdf optimizeImages step is skipped in that case to avoid double JPEG encoding.