public class AdvancedCompressionOptions extends Object
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 and Description |
|---|
AdvancedCompressionOptions() |
| Modifier and Type | Method and Description |
|---|---|
int |
getCompressionLevel()
zlib compression level (0-9).
|
Integer |
getJpegQuality()
JPEG quality used when re-encoding images during optimization (1-100).
|
ObjectStreamMode |
getObjectStreams()
Object stream mode used when writing the output PDF.
|
int |
getOptimizeImagesMinArea()
Minimum image area (width × height pixels) for image optimization to apply.
|
int |
getOptimizeImagesMinHeight()
Minimum image height (in pixels) for image optimization to apply.
|
int |
getOptimizeImagesMinWidth()
Minimum image width (in pixels) for image optimization to apply.
|
Integer |
getTargetImageDpi()
Target DPI for image downsampling during advanced compression.
|
boolean |
isCoalesceContents()
Merge a page's separate content streams so they Flate-compress together.
|
boolean |
isCompressStreams()
Compress content streams using zlib/Flate.
|
boolean |
isDecodeGeneralizedStreams()
Decode generalized filters (FlateDecode, LZW, ASCII85, ASCIIHex) before re-encoding.
|
boolean |
isHighQualityImageSubsampling()
4:4:4 chroma subsampling when true (better color), 4:1:1 when false (smaller).
|
boolean |
isRecompressFlate()
Re-compress already Flate-encoded streams using
getCompressionLevel(). |
boolean |
isRemoveStructureTree()
Remove the document structure tree before compression.
|
boolean |
isRemoveUnreferencedResources()
Drop indirect objects that are not referenced from the document catalog.
|
boolean |
pdfiumWillReEncode()
Returns true if pdfium-side image re-encoding is engaged (because a
positive
targetImageDpi was set). |
AdvancedCompressionOptions |
setCoalesceContents(boolean v) |
AdvancedCompressionOptions |
setCompressionLevel(int v) |
AdvancedCompressionOptions |
setCompressStreams(boolean v) |
AdvancedCompressionOptions |
setDecodeGeneralizedStreams(boolean v) |
AdvancedCompressionOptions |
setHighQualityImageSubsampling(boolean v) |
AdvancedCompressionOptions |
setJpegQuality(Integer jpegQuality) |
AdvancedCompressionOptions |
setObjectStreams(ObjectStreamMode v) |
AdvancedCompressionOptions |
setOptimizeImagesMinArea(int v) |
AdvancedCompressionOptions |
setOptimizeImagesMinHeight(int v) |
AdvancedCompressionOptions |
setOptimizeImagesMinWidth(int v) |
AdvancedCompressionOptions |
setRecompressFlate(boolean v) |
AdvancedCompressionOptions |
setRemoveStructureTree(boolean v) |
AdvancedCompressionOptions |
setRemoveUnreferencedResources(boolean v) |
AdvancedCompressionOptions |
setTargetImageDpi(Integer targetImageDpi) |
public Integer getJpegQuality()
Recommended settings:
null — No image re-encoding (default)95 — Archival, minimal artifacts85 — High quality70 — Balanced, good for general use50 — Web/email; visible artifacts, smaller filesWhere 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.public AdvancedCompressionOptions setJpegQuality(Integer jpegQuality)
public Integer getTargetImageDpi()
targetImageDpi before 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.
public AdvancedCompressionOptions setTargetImageDpi(Integer targetImageDpi)
public boolean isHighQualityImageSubsampling()
public AdvancedCompressionOptions setHighQualityImageSubsampling(boolean v)
public boolean isRemoveStructureTree()
public AdvancedCompressionOptions setRemoveStructureTree(boolean v)
public boolean isCompressStreams()
public AdvancedCompressionOptions setCompressStreams(boolean v)
public boolean isRecompressFlate()
getCompressionLevel().public AdvancedCompressionOptions setRecompressFlate(boolean v)
public int getCompressionLevel()
public AdvancedCompressionOptions setCompressionLevel(int v)
public ObjectStreamMode getObjectStreams()
public AdvancedCompressionOptions setObjectStreams(ObjectStreamMode v)
public boolean isRemoveUnreferencedResources()
public AdvancedCompressionOptions setRemoveUnreferencedResources(boolean v)
public boolean isCoalesceContents()
public AdvancedCompressionOptions setCoalesceContents(boolean v)
public boolean isDecodeGeneralizedStreams()
public AdvancedCompressionOptions setDecodeGeneralizedStreams(boolean v)
public int getOptimizeImagesMinWidth()
public AdvancedCompressionOptions setOptimizeImagesMinWidth(int v)
public int getOptimizeImagesMinHeight()
public AdvancedCompressionOptions setOptimizeImagesMinHeight(int v)
public int getOptimizeImagesMinArea()
public AdvancedCompressionOptions setOptimizeImagesMinArea(int v)
public boolean pdfiumWillReEncode()
targetImageDpi was set). The qpdf optimizeImages
step is skipped in that case to avoid double JPEG encoding.Copyright © 2022–2026 Iron Software. All rights reserved.