Class AdvancedCompressionOptions
- java.lang.Object
-
- com.ironsoftware.ironpdf.compression.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
AdvancedCompressionOptionsclass shipped in IronPdf 2026.6.
-
-
Constructor Summary
Constructors Constructor Description AdvancedCompressionOptions()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description BitonalCompressionModegetBitonalMode()Bitonal (1-bit CCITT Group 4) compression mode for scanned / black-and-white content.IntegergetBitonalResolutionDpi()Target DPI for bitonal images when bitonal mode is enabled.IntegergetBitonalThreshold()Luminance threshold used to split pixels into black/white when bitonal mode is enabled.intgetCompressionLevel()zlib compression level (0-9).IntegergetJpegQuality()JPEG quality used when re-encoding images during optimization (1-100).ObjectStreamModegetObjectStreams()Object stream mode used when writing the output PDF.intgetOptimizeImagesMinArea()Minimum image area (width × height pixels) for image optimization to apply.intgetOptimizeImagesMinHeight()Minimum image height (in pixels) for image optimization to apply.intgetOptimizeImagesMinWidth()Minimum image width (in pixels) for image optimization to apply.IntegergetTargetImageDpi()Target DPI for image downsampling during advanced compression.booleanisCoalesceContents()Merge a page's separate content streams so they Flate-compress together.booleanisCompressStreams()Compress content streams using zlib/Flate.booleanisDecodeGeneralizedStreams()Decode generalized filters (FlateDecode, LZW, ASCII85, ASCIIHex) before re-encoding.booleanisHighQualityImageSubsampling()4:4:4 chroma subsampling when true (better color), 4:1:1 when false (smaller).booleanisRecompressFlate()Re-compress already Flate-encoded streams usinggetCompressionLevel().booleanisRemoveStructureTree()Remove the document structure tree before compression.booleanisRemoveUnreferencedResources()Drop indirect objects that are not referenced from the document catalog.booleanpdfiumImagePassWillRun()Returns true if the pdfium image pass runs at all: a positivetargetImageDpi, or bitonal mode on.booleanpdfiumWillReEncode()Returns true if pdfium-side image re-encoding is engaged (because a positivetargetImageDpiwas set).AdvancedCompressionOptionssetBitonalMode(BitonalCompressionMode bitonalMode)Opt-in bitonal (1-bit CCITT Group 4) compression.AdvancedCompressionOptionssetBitonalResolutionDpi(Integer bitonalResolutionDpi)Target DPI for bitonal images when bitonal mode is enabled; images above it are downsampled before thresholding.AdvancedCompressionOptionssetBitonalThreshold(Integer bitonalThreshold)Luminance threshold (1-255) splitting pixels into black/white when bitonal mode is enabled.AdvancedCompressionOptionssetCoalesceContents(boolean v)AdvancedCompressionOptionssetCompressionLevel(int v)AdvancedCompressionOptionssetCompressStreams(boolean v)AdvancedCompressionOptionssetDecodeGeneralizedStreams(boolean v)AdvancedCompressionOptionssetHighQualityImageSubsampling(boolean v)AdvancedCompressionOptionssetJpegQuality(Integer jpegQuality)AdvancedCompressionOptionssetObjectStreams(ObjectStreamMode v)AdvancedCompressionOptionssetOptimizeImagesMinArea(int v)AdvancedCompressionOptionssetOptimizeImagesMinHeight(int v)AdvancedCompressionOptionssetOptimizeImagesMinWidth(int v)AdvancedCompressionOptionssetRecompressFlate(boolean v)AdvancedCompressionOptionssetRemoveStructureTree(boolean v)AdvancedCompressionOptionssetRemoveUnreferencedResources(boolean v)AdvancedCompressionOptionssetTargetImageDpi(Integer targetImageDpi)
-
-
-
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 artifacts85— High quality70— Balanced, good for general use50— Web/email; visible artifacts, smaller files
Where the re-encoding happens depends on
getTargetImageDpi():targetImageDpiset (default150): each image is downsampled and re-encoded at this quality.optimizeImagesis skipped to avoid double JPEG encoding.targetImageDpi = null:optimizeImagesre-encodes images at this quality without changing pixel dimensions.
-
setJpegQuality
public AdvancedCompressionOptions setJpegQuality(Integer jpegQuality)
-
getTargetImageDpi
public Integer getTargetImageDpi()
Target DPI for image downsampling during advanced compression. Images whose effective rendered DPI exceeds this value are box-filter downsampled totargetImageDpibefore re-encoding.Recommended values:
300— Print quality, lossless to the eye at normal viewing distance200— Crisp on high-DPI / retina screens150— Default; best size/quality balance for screen + email96— Aggressive; soft text but still readablenull— Disabled; preserve original resolution (largest file)
Lossy. Once an image is downsampled it cannot be restored to its original resolution.
-
setTargetImageDpi
public AdvancedCompressionOptions setTargetImageDpi(Integer targetImageDpi)
-
isHighQualityImageSubsampling
public boolean isHighQualityImageSubsampling()
4:4:4 chroma subsampling when true (better color), 4:1:1 when false (smaller).
-
setHighQualityImageSubsampling
public AdvancedCompressionOptions setHighQualityImageSubsampling(boolean v)
-
isRemoveStructureTree
public boolean isRemoveStructureTree()
Remove the document structure tree before compression.
-
setRemoveStructureTree
public AdvancedCompressionOptions setRemoveStructureTree(boolean v)
-
isCompressStreams
public boolean isCompressStreams()
Compress content streams using zlib/Flate.
-
setCompressStreams
public AdvancedCompressionOptions setCompressStreams(boolean v)
-
isRecompressFlate
public boolean isRecompressFlate()
Re-compress already Flate-encoded streams usinggetCompressionLevel().
-
setRecompressFlate
public AdvancedCompressionOptions setRecompressFlate(boolean v)
-
getCompressionLevel
public int getCompressionLevel()
zlib compression level (0-9). Default 9.
-
setCompressionLevel
public AdvancedCompressionOptions setCompressionLevel(int v)
-
getObjectStreams
public ObjectStreamMode getObjectStreams()
Object stream mode used when writing the output PDF.
-
setObjectStreams
public AdvancedCompressionOptions setObjectStreams(ObjectStreamMode v)
-
isRemoveUnreferencedResources
public boolean isRemoveUnreferencedResources()
Drop indirect objects that are not referenced from the document catalog.
-
setRemoveUnreferencedResources
public AdvancedCompressionOptions setRemoveUnreferencedResources(boolean v)
-
isCoalesceContents
public boolean isCoalesceContents()
Merge a page's separate content streams so they Flate-compress together.
-
setCoalesceContents
public AdvancedCompressionOptions setCoalesceContents(boolean v)
-
isDecodeGeneralizedStreams
public boolean isDecodeGeneralizedStreams()
Decode generalized filters (FlateDecode, LZW, ASCII85, ASCIIHex) before re-encoding.
-
setDecodeGeneralizedStreams
public AdvancedCompressionOptions setDecodeGeneralizedStreams(boolean v)
-
getOptimizeImagesMinWidth
public int getOptimizeImagesMinWidth()
Minimum image width (in pixels) for image optimization to apply.
-
setOptimizeImagesMinWidth
public AdvancedCompressionOptions setOptimizeImagesMinWidth(int v)
-
getOptimizeImagesMinHeight
public int getOptimizeImagesMinHeight()
Minimum image height (in pixels) for image optimization to apply.
-
setOptimizeImagesMinHeight
public AdvancedCompressionOptions setOptimizeImagesMinHeight(int v)
-
getOptimizeImagesMinArea
public int getOptimizeImagesMinArea()
Minimum image area (width × height pixels) for image optimization to apply.
-
setOptimizeImagesMinArea
public AdvancedCompressionOptions setOptimizeImagesMinArea(int v)
-
getBitonalMode
public BitonalCompressionMode getBitonalMode()
Bitonal (1-bit CCITT Group 4) compression mode for scanned / black-and-white content.- Returns:
- the bitonal mode;
BitonalCompressionMode.OFFby default
-
setBitonalMode
public AdvancedCompressionOptions setBitonalMode(BitonalCompressionMode bitonalMode)
Opt-in bitonal (1-bit CCITT Group 4) compression. When notBitonalCompressionMode.OFF, eligible images are thresholded to pure black/white and CCITT Group 4 encoded, which is far smaller than JPEG on scanned text (and sharper). The bitonal result is only kept when it is actually smaller than the original; images that are already bitonal are left untouched.Note: when
getBitonalResolutionDpi()is unset the bitonal pass falls back togetTargetImageDpi()(default 150), so setting only this resamples a 300 DPI scan to 150 DPI before thresholding. Set a bitonal resolution, or settargetImageDpitonull, to threshold at the source resolution.Enabling bitonal also runs the image pass for images that do not qualify (or whose CCITT encoding is not smaller): those go through the normal JPEG pass at
getJpegQuality()(85 when unset), and a re-encode is kept only when it is smaller than the original. This matches .NET. Use it on documents that are mostly black-and-white scans.- Parameters:
bitonalMode- the bitonal mode (non-null)- Returns:
- this instance
- Throws:
IllegalArgumentException- ifbitonalModeis null
-
getBitonalResolutionDpi
public Integer getBitonalResolutionDpi()
Target DPI for bitonal images when bitonal mode is enabled.- Returns:
- the bitonal DPI, or
null(default) to fall back togetTargetImageDpi()
-
setBitonalResolutionDpi
public AdvancedCompressionOptions setBitonalResolutionDpi(Integer bitonalResolutionDpi)
Target DPI for bitonal images when bitonal mode is enabled; images above it are downsampled before thresholding. Wins overgetTargetImageDpi()when set; whennullthe bitonal pass falls back totargetImageDpi, and when both arenullthe source resolution is kept. A value<= 0is treated as unset. No effect when bitonal is off.- Parameters:
bitonalResolutionDpi- the DPI, ornull- Returns:
- this instance
-
getBitonalThreshold
public Integer getBitonalThreshold()
Luminance threshold used to split pixels into black/white when bitonal mode is enabled.- Returns:
- the threshold, or
null(default) for the automatic (Otsu) threshold
-
setBitonalThreshold
public AdvancedCompressionOptions setBitonalThreshold(Integer bitonalThreshold)
Luminance threshold (1-255) splitting pixels into black/white when bitonal mode is enabled.null(default) auto-computes an optimal per-image threshold (Otsu's method, recommended). A value of 0 or outside 1-255 falls back to auto, since a cutoff of 0 would make every pixel white.- Parameters:
bitonalThreshold- the threshold, ornull- Returns:
- this instance
-
pdfiumWillReEncode
public boolean pdfiumWillReEncode()
Returns true if pdfium-side image re-encoding is engaged (because a positivetargetImageDpiwas set). The qpdfoptimizeImagesstep is skipped in that case to avoid double JPEG encoding.
-
pdfiumImagePassWillRun
public boolean pdfiumImagePassWillRun()
Returns true if the pdfium image pass runs at all: a positivetargetImageDpi, or bitonal mode on. (Mirrors .NET, which widened only this run condition for bitonal; the qpdf flags still key offpdfiumWillReEncode().)
-
-