All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pdftron::PDF::Flattener Class Reference

#include <Flattener.h>

Public Types

enum  Threshold {
  e_very_strict, e_strict, e_default, e_keep_most,
enum  FlattenMode { e_simple, e_fast }

Public Member Functions

 Flattener ()
 ~Flattener ()
void SetDPI (UInt32 dpi)
void SetMaximumImagePixels (UInt32 max_pixels)
void SetPreferJPG (bool jpg)
void SetJPGQuality (UInt32 quality)
void SetThreshold (enum Threshold threshold)
void SetPathHinting (bool enable_hinting)
void Process (pdftron::PDF::PDFDoc &doc, enum FlattenMode mode)
void Process (PDF::Page &page, enum FlattenMode mode)
void Destroy ()

Detailed Description

Flattener is a optional PDFNet add-on that can be used to simplify and optimize existing PDF's to render faster on devices with lower memory and speeds.

PDF documents can frequently contain very complex page description (e.g. thousands of paths, different shadings, color spaces, blend modes, large images etc.) that may not be suitable for interactive viewing on mobile devices. Flattener can be used to speed-up PDF rendering on mobile devices and on the Web by simplifying page content (e.g. flattening complex graphics into images) while maintaining vector text whenever possible.

By using the FlattenMode::e_simple option each page in the PDF will be reduced to a single background image, with the remaining text over top in vector format. Some text may still get flattened, in particular any text that is clipped, or underneath, other content that will be flattened.

On the other hand the FlattenMode::e_fast will not flatten simple content, such as simple straight lines, nor will it flatten Type3 fonts.

'Flattener' is available as a separately licensable add-on to PDFNet core license or for use via Cloud API (
See 'pdftron.PDF.Optimizer' for alternate approach to optimize PDFs with focus on file size reduction.

Definition at line 40 of file Flattener.h.

Member Enumeration Documentation


Feature reduce PDF to a simple two layer representation consisting of a single background RGB image and a simple top text layer.


Feature reduce PDF while trying to preserve some complex PDF features (such as vector figures, transparency, shadings, blend modes, Type3 fonts etc.) for pages that are already fast to render. This option can also result in smaller & faster files compared to e_simple, but the pages may have more complex structure.

Definition at line 102 of file Flattener.h.


Render (flatten) any text that is clipped or occluded.


Render text that are marginally clipped or occluded.


Render text that are somewhat clipped or occluded.


Only render text that are seriously clipped or occluded.


Only render text that are completely occluded, or used as a clipping path.

Definition at line 75 of file Flattener.h.

Constructor & Destructor Documentation

pdftron::PDF::Flattener::Flattener ( )

Flattener constructor

pdftron::PDF::Flattener::~Flattener ( )

Member Function Documentation

void pdftron::PDF::Flattener::Destroy ( )

Frees the native memory of the object.

void pdftron::PDF::Flattener::Process ( pdftron::PDF::PDFDoc doc,
enum FlattenMode  mode 

Process each page in the PDF, flattening content that matches the mode criteria.

docthe document to flatten.
modeindicates the criteria for which elements are flattened.
void pdftron::PDF::Flattener::Process ( PDF::Page page,
enum FlattenMode  mode 

Process the given page, flattening content that matches the mode criteria.

pagethe page to flatten.
modeindicates the criteria for which elements are flattened.
void pdftron::PDF::Flattener::SetDPI ( UInt32  dpi)

The output resolution, from 1 to 1000, in Dots Per Inch (DPI) at which to render elements which cannot be directly converted. the default value is 150 Dots Per Inch

dpithe resolution in Dots Per Inch
void pdftron::PDF::Flattener::SetJPGQuality ( UInt32  quality)

Specifies the compression quality to use when generating JPEG images.

qualitythe JPEG compression quality, from 0(highest compression) to 100(best quality).
void pdftron::PDF::Flattener::SetMaximumImagePixels ( UInt32  max_pixels)

Specifies the maximum image size in pixels.

max_pixelsthe maximum number of pixels an image can have.
void pdftron::PDF::Flattener::SetPathHinting ( bool  enable_hinting)

Enable or disable path hinting.

enable_hintingif true path hinting is enabled. Path hinting is used to slightly adjust paths in order to avoid or alleviate artifacts of hair line cracks between certain graphical elements. This option is turned on by default.
void pdftron::PDF::Flattener::SetPreferJPG ( bool  jpg)

Specifies whether to leave images in existing compression, or as JPEG.

jpgif true PDF will contain all JPEG images.
void pdftron::PDF::Flattener::SetThreshold ( enum Threshold  threshold)

Used to control how precise or relaxed text flattening is. When some text is preserved (not flattened to image) the visual appearance of the document may be altered.

thresholdthe threshold setting to use.

The documentation for this class was generated from the following file: