Foxit PDF SDK
fs_optimization.h
Go to the documentation of this file.
1 
15 #ifndef FS_PDFOPTIMIZATION_H_
16 #define FS_PDFOPTIMIZATION_H_
17 
18 #include "common/fs_common.h"
19 #include "pdf/fs_pdfdoc.h"
20 #include "pdf/fs_pdfpage.h"
21 
27 namespace foxit {
31 namespace addon {
35 namespace optimization {
36 class ImageSettings;
37 class MonoImageSettings;
38 class OptimizerSettings;
40 
42 class AuditSpaceSize FS_FINAL : public Object{
43  public:
46  : content_streams(0)
47  , images(0)
48  , fonts(0)
49  , bookmarks(0)
50  , x_object_forms(0)
51  , structure_infos(0)
52  , acroforms(0)
53  , link_annots(0)
55  , color_space(0)
56  , pattern_infos(0)
57  , piece_infos(0)
61  , cross_ref_tables(0)
62  , thumbs(0)
63  , embed_files(0)
64  , web_infos(0) { }
65 
75  images = data.images;
76  fonts = data.fonts;
77  bookmarks = data.bookmarks;
81  acroforms = data.acroforms;
82  link_annots = data.link_annots;
83  color_space = data.color_space;
85  piece_infos = data.piece_infos;
90  thumbs = data.thumbs;
91  embed_files = data.embed_files;
92  web_infos = data.web_infos;
93  return (*this);
94  }
95 
102 
109 
116 
123 
130 
137 
144 
151 
158 
165 
172 
179 
186 
193 
200 
207 
214 
221 
228 };
229 
235  public:
241  virtual void Release() = 0;
242 
253 
254  protected:
256 };
257 
265 class Optimizer FS_FINAL : public Base {
266  public:
286  static common::Progressive Optimize(const pdf::PDFDoc& doc,const OptimizerSettings& settings,common::PauseCallback* pause);
287 
308 
330  static common::Progressive OptimizeScannedPDF(const pdf::PDFDoc& doc, const OptimizeScannedPDFSettings& settings, ImageCompressionCallback* image_compress_callback, common::PauseCallback* pause);
331 
339  static AuditSpaceSize ComputeAuditSpace(const pdf::PDFDoc& doc);
340 };
341 
348 class ImageSettings FS_FINAL : public Base {
349  public:
355  typedef enum _ImageCompressMode {
367 
373  typedef enum _ImageCompressQuality {
387 
393  typedef enum _StretchMode {
397  e_StretchOff = 0x00,
406  } StretchMode;
407 
415  ImageSettings();
416 
417  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
418  explicit ImageSettings(FS_HANDLE handle);
419 
421  ~ImageSettings();
422 
428  ImageSettings(const ImageSettings& other);
429 
437  ImageSettings& operator = (const ImageSettings& other);
445  bool operator == (const ImageSettings& other) const;
446 
454  bool operator != (const ImageSettings& other) const;
455 
463  bool IsEmpty() const;
464 
476  void SetStretchMode(StretchMode mode);
477 
489  void SetImageDPI(int32 dpi);
490 
509  void SetImageDPILimit(int dpi_limit);
510 
523 
536  void SetQuality(ImageCompressQuality quality);
537 
550  void SetBackgroundDownScale(int32 down_scale);
551 
564  void SetForegroundDownScale(int32 down_scale);
565 
581  void SetTextSensitivity(int32 text_sensitivity);
582 
595  void SetTileSize(int size);
596 };
597 
604 class MonoImageSettings FS_FINAL : public Base {
605  public:
611  typedef enum _MonoImageCompressMode {
627 
633  typedef enum _MonoImageCompressQuality {
649 
655  typedef enum _StretchMode {
659  e_StretchOff = 0x00,
668  } StretchMode;
669 
678 
679  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
680  explicit MonoImageSettings(FS_HANDLE handle);
681 
684 
690  MonoImageSettings(const MonoImageSettings& other);
691 
707  bool operator == (const MonoImageSettings& other) const;
708 
716  bool operator != (const MonoImageSettings& other) const;
717 
725  bool IsEmpty() const;
726 
738  void SetImageDPI(int32 dpi);
739 
758  void SetImageDPILimit(int dpi_limit);
759 
772 
784  void SetStretchMode(StretchMode mode) ;
785 
799  void SetQuality(MonoImageCompressQuality quality);
800 };
801 
808 class UnembeddedFontSettings FS_FINAL : public Base {
809  public:
814 
815  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
816  explicit UnembeddedFontSettings(FS_HANDLE handle);
817 
820 
827 
836 
845  bool operator==(const UnembeddedFontSettings& other) const;
846 
855  bool operator!=(const UnembeddedFontSettings& other) const;
856 
864  bool IsEmpty() const;
865 
874  void SetSubsetAllEmFonts(bool bSubsetAllEmFonts);
875 
888  void SetUnembeddedFontNameArray(const WStringArray& font_name_array);
889 };
890 
896 class OptimizerSettings FS_FINAL : public Base {
897  public:
903  typedef enum _OptimizerOptions {
915 
921  typedef enum _CleanUpOptions {
934  } CleanUpOptions;
935 
941  typedef enum _DiscardObjectsOptions {
976 
982  typedef enum _DiscardUserDataOptions {
998 
1007  OptimizerSettings();
1008 
1009  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
1010  explicit OptimizerSettings(FS_HANDLE handle);
1011 
1014 
1020  OptimizerSettings(const OptimizerSettings& other);
1021 
1030 
1038  bool operator == (const OptimizerSettings& other) const;
1039 
1047  bool operator != (const OptimizerSettings& other) const;
1048 
1056  bool IsEmpty() const;
1057 
1071  void SetOptimizerOptions(uint32 optimize_options);
1072 
1094  void SetColorGrayImageSettings(const ImageSettings& settings);
1095 
1110  void SetColorImageSettings(const ImageSettings& settings);
1111 
1126  void SetGrayscaleImageSettings(const ImageSettings& settings);
1127 
1142  void SetMonoImageSettings(const MonoImageSettings& settings);
1143 
1157  void SetUnembeddedFontSettings(const UnembeddedFontSettings& settings);
1158 
1175  void SetCleanUpOptions(foxit::uint32 clean_up_options);
1176 
1193  void SetDiscardObjectsOptions(foxit::uint32 discard_objects_options);
1194 
1211  void SetDiscardUserDataOptions(foxit::uint32 discard_userdata_options);
1212 };
1213 
1219 class OptimizeScannedPDFSettings FS_FINAL : public Base{
1220  public:
1226  typedef enum _ScannedImageCompressMode {
1236 
1242  typedef enum _ScannedMonoImageCompressMode {
1252 
1253 
1255 
1256  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
1257  explicit OptimizeScannedPDFSettings(FS_HANDLE handle);
1258 
1261 
1268 
1284  bool operator == (const OptimizeScannedPDFSettings& other) const;
1285 
1293  bool operator != (const OptimizeScannedPDFSettings& other) const;
1294 
1302  bool IsEmpty() const;
1303 
1313  void SetOptimizedPages(const common::Range& pages);
1314 
1327 
1341 
1354 };
1355 
1356 } // namespace optimization
1357 } // namespace addon
1358 } // namespace foxit
1359 
1360 #endif
Compression mode: zip.
Definition: fs_optimization.h:625
Compression mode: CCITT Group 4.
Definition: fs_optimization.h:615
void SetColorImageSettings(const ImageSettings &settings)
Set optimization related settings for color image.
Compression quality: Low.
Definition: fs_optimization.h:377
bool IsEmpty() const
Check whether current object is empty or not.
ScannedMonoImageCompressMode
Enumeration for compression mode used for monochrome image.
Definition: fs_optimization.h:1242
Compression quality: Medium, only for e_ImageCompressHigh compress mode.
Definition: fs_optimization.h:643
MonoImageCompressMode
Enumeration for compression mode used for monochrome image.
Definition: fs_optimization.h:611
Definition: fs_common.h:1348
Compression quality: High, only for e_ImageCompressHigh compress mode.
Definition: fs_optimization.h:645
Definition: fs_image.h:36
Discard unreferenced named destination.
Definition: fs_optimization.h:931
void SetCompressionMode(MonoImageCompressMode mode)
Set compression mode used for optimizing monochrome images in a PDF document.
Compression mode: zip.
Definition: fs_optimization.h:365
void SetColorGrayImageCompressionMode(ScannedImageCompressMode mode)
Set compression mode used for optimizing color/gray images in the scanned PDF document.
CFX_Object Object
Object type.
Definition: fs_basictypes.h:221
When this is set, that means not to do any interpolation for stretching.
Definition: fs_optimization.h:405
Use Flate to encode streams that are not encoded.
Definition: fs_optimization.h:923
Optimize PDF document by discarding user data.
Definition: fs_optimization.h:913
Compression mode: jpeg2000 lossy.
Definition: fs_optimization.h:1234
Header file for PDF document related definitions and classes.
void SetSubsetAllEmFonts(bool bSubsetAllEmFonts)
Sets whether to include subsets of all unembedded fonts.
uint32 acroforms
Total size of AcroForm data in bytes.
Definition: fs_optimization.h:143
void SetOptimizedPages(const common::Range &pages)
Set the pages which will be optimized.
Compression mode: jpeg2000 lossless.
Definition: fs_optimization.h:1232
Compression mode: CCITT Group 3.
Definition: fs_optimization.h:613
Definition: fs_basictypes.h:228
void SetStretchMode(StretchMode mode)
Set stretch mode used for optimizing monochrome images in a PDF document.
Discard embedded print settings.
Definition: fs_optimization.h:955
Discard hidden layer content and flatten visible layers.
Definition: fs_optimization.h:994
Compression mode: jbig2 lossy.
Definition: fs_optimization.h:1244
Discard file attachments.
Definition: fs_optimization.h:990
uint32 color_space
Total size of color space definitions in bytes.
Definition: fs_optimization.h:164
void SetUnembeddedFontSettings(const UnembeddedFontSettings &settings)
Set optimization related settings for unembedding fonts.
Detect and merge image fragments.
Definition: fs_optimization.h:972
static common::Progressive Optimize(const pdf::PDFDoc &doc, const OptimizerSettings &settings, common::PauseCallback *pause)
Optimize the given PDF document with specified optimizer settings.
AuditSpaceSize & operator=(const AuditSpaceSize &data)
Assign operator.
Definition: fs_optimization.h:73
uint32 embed_files
Total size of embedded file streams in bytes.
Definition: fs_optimization.h:220
uint32 bookmarks
Total size of bookmarks data in bytes.
Definition: fs_optimization.h:122
uint32 extend_graphics_states
Total size of extended graphics states in bytes.
Definition: fs_optimization.h:199
bool operator==(const MonoImageSettings &other) const
Equal operator.
Discard all form submission, import and reset actions.
Definition: fs_optimization.h:943
Compression quality: Lossless.
Definition: fs_optimization.h:635
uint32 images
Total size of embedded images in bytes.
Definition: fs_optimization.h:108
OptimizerSettings & operator=(const OptimizerSettings &other)
Assign operator.
Definition: fs_optimization.h:265
bool operator!=(const UnembeddedFontSettings &other) const
Not equal operator.
uint32 comments_and_3d_contents
Total size of comments and 3D contents in bytes.
Definition: fs_optimization.h:185
void SetDiscardObjectsOptions(foxit::uint32 discard_objects_options)
Set optimization related options for discarding objects.
bool operator==(const OptimizerSettings &other) const
Equal operator.
When this is set, that means to do default stretching.
Definition: fs_optimization.h:395
When this is set, that means not to do halftone for shrinking or rotating.
Definition: fs_optimization.h:663
When this is set, that means to do interpolation for zooming.
Definition: fs_optimization.h:399
Definition: fs_pdfdoc.h:772
DiscardUserDataOptions
Enumeration for discarding user data options.
Definition: fs_optimization.h:982
Definition: fs_optimization.h:348
Compression mode: high.
Definition: fs_optimization.h:617
Compression mode: jpeg2000.
Definition: fs_optimization.h:361
Discard all JavaScript actions.
Definition: fs_optimization.h:951
bool operator==(const ImageSettings &other) const
Equal operator.
discard tag user data
Definition: fs_optimization.h:996
void SetColorGrayImageSettings(const ImageSettings &settings)
Set optimization related settings for color/gray image.
void SetDiscardUserDataOptions(foxit::uint32 discard_userdata_options)
Set optimization related options for discarding user data.
When this is set, that means to do bicubic interpolation for zooming.
Definition: fs_optimization.h:665
void SetImageDPILimit(int dpi_limit)
Set the lower limit DPI value for the monochrome image to decide if the image is to be compressed in ...
Optimize PDF document by unembedding some embedded fonts.
Definition: fs_optimization.h:911
uint32 piece_infos
Total size of piece information in bytes.
Definition: fs_optimization.h:178
bool IsEmpty() const
Check whether current object is empty or not.
Discard external cross references.
Definition: fs_optimization.h:986
When this is set, that means to do bicubic interpolation for zooming.
Definition: fs_optimization.h:403
When this is set, that means to do interpolation for zooming.
Definition: fs_optimization.h:661
Compression quality: Lossless, only for jpeg2000 compress mode.
Definition: fs_optimization.h:385
void SetStretchMode(StretchMode mode)
Set stretch mode used for optimizing color/gray images in a PDF document.
bool IsEmpty() const
Check whether current object is empty or not.
uint32 x_object_forms
Total size of XObject Forms in bytes.
Definition: fs_optimization.h:129
Compression mode: retain, which means no compression.
Definition: fs_optimization.h:363
Cleanup page content Change 0A,0D in the content stream to Spaces.
Definition: fs_optimization.h:933
void SetImageDPILimit(int dpi_limit)
Set the lower limit DPI value for the color/gray image to decide if the image is to be compressed in ...
Discard all annotations, forms and multimedia.
Definition: fs_optimization.h:984
DiscardObjectsOptions
Enumeration for discarding objects options.
Definition: fs_optimization.h:941
Discard embedded page thumbnails.
Definition: fs_optimization.h:953
File stream interface, reading & writing.
Definition: fx_stream.h:692
void SetForegroundDownScale(int32 down_scale)
Set the foreground downscale value for lossy compression modes, used for optimizing color images in a...
Compression quality: Minimum.
Definition: fs_optimization.h:375
Compression quality: Minimum, only for e_ImageCompressHigh compress mode.
Definition: fs_optimization.h:639
bool operator !=(const ImageSettings &other) const
Not equal operator.
OptimizeScannedPDFSettings & operator=(const OptimizeScannedPDFSettings &other)
Assign operator.
void SetColorGrayImageCompressionQuality(foxit::uint32 quality)
Set the quality for lossy compression modes, used for optimizing color/gray images in a scanned PDF d...
bool operator==(const UnembeddedFontSettings &other) const
Equal operator.
void SetMonoImageCompressionMode(ScannedMonoImageCompressMode mode)
Set compression mode used for optimizing monochrome images in a scanned PDF document.
Optimize PDF document by compressing images.
Definition: fs_optimization.h:905
Compression mode: retain, which means no compression.
Definition: fs_optimization.h:621
Structure of audit space, the unit is byte type.
Definition: fs_optimization.h:42
Definition: fx_basic.h:3758
Definition: fs_optimization.h:604
StretchMode
Enumeration for stretch mode.
Definition: fs_optimization.h:655
bool operator !=(const OptimizerSettings &other) const
Not equal operator.
OptimizerOptions
Enumeration for optimizer options.
Definition: fs_optimization.h:903
uint32 content_streams
Total size of all page content streams in bytes.
Definition: fs_optimization.h:101
Definition: fs_common.h:373
ScannedImageCompressMode
Enumeration for compression mode used for color or gray image.
Definition: fs_optimization.h:1226
Optimize PDF document by discarding objects.
Definition: fs_optimization.h:909
Compression mode: high.
Definition: fs_optimization.h:1228
uint32 web_infos
Total size of web-related metadata in bytes.
Definition: fs_optimization.h:227
Compression mode: jpeg.
Definition: fs_optimization.h:1230
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:196
void SetTextSensitivity(int32 text_sensitivity)
Set the text sensitivity for lossy compression modes, used for optimizing color images in a PDF docum...
void SetImageDPI(int32 dpi)
Set the DPI value as the target compressed value for compressing color/gray images in a PDF document.
smooth lines to curves
Definition: fs_optimization.h:974
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:214
When this is set, that means not to do any interpolation for stretching.
Definition: fs_optimization.h:667
uint32 link_annots
Total size of link annotations in bytes.
Definition: fs_optimization.h:150
Compression quality: Lossy.
Definition: fs_optimization.h:637
Header file for common definitions and classes.
static AuditSpaceSize ComputeAuditSpace(const pdf::PDFDoc &doc)
Compute audit space.
ImageSettings & operator=(const ImageSettings &other)
Assign operator.
Compression mode: jpeg.
Definition: fs_optimization.h:359
Optimize PDF document by cleaning up.
Definition: fs_optimization.h:907
In streams that use LZW encoding, use Flate instead.
Definition: fs_optimization.h:925
void SetOptimizerOptions(uint32 optimize_options)
Set options to decide which kind of optimizer setting will be used for optimizing PDF document.
bool IsEmpty() const
Check whether current object is empty or not.
virtual common::file::StreamCallback * GetTemporaryFileStream(const common::Bitmap &bitmap)=0
Get temporary file stream. The file stream is used for saving the encoding result of JPEG2000 and JBI...
uint32 fonts
Total size of embedded fonts in bytes.
Definition: fs_optimization.h:115
bool operator==(const OptimizeScannedPDFSettings &other) const
Equal operator.
ImageCompressQuality
Enumeration for loss compression quality used for color or gray image.
Definition: fs_optimization.h:373
void SetCompressionMode(ImageCompressMode mode)
Set compression mode used for optimizing color/gray images in a PDF document.
Remove invalid bookmarks.
Definition: fs_optimization.h:927
Discard private data of other applications.
Definition: fs_optimization.h:992
Compression quality: Low, only for e_ImageCompressHigh compress mode.
Definition: fs_optimization.h:641
Compression quality: Medium.
Definition: fs_optimization.h:379
FX_INT32 int32
32-bit signed integer.
Definition: fs_basictypes.h:194
Definition: fs_basictypes.h:449
void SetBackgroundDownScale(int32 down_scale)
Set the background downscale value for lossy compression modes, used for optimizing color images in a...
void SetMonoImageSettings(const MonoImageSettings &settings)
Set optimization related settings for monochrome image.
Compression quality: High.
Definition: fs_optimization.h:381
Header file for PDF page related definitions and classes.
AuditSpaceSize()
Constructor.
Definition: fs_optimization.h:45
uint32 pattern_infos
Total size of pattern objects in bytes.
Definition: fs_optimization.h:171
static common::Progressive StartSubsetEmbedFont(const pdf::PDFDoc &doc, common::PauseCallback *pause)
Start to make subsets for embedded fonts in the given PDF document.
void SetUnembeddedFontNameArray(const WStringArray &font_name_array)
Set a font name array to specify which fonts are to be unembeded.
MonoImageCompressQuality
Enumeration for compression quality used for monochrome image.
Definition: fs_optimization.h:633
When this is set, that means to do without stretching.
Definition: fs_optimization.h:659
Foxit namespace.
Definition: fs_pdf3d.h:27
void SetGrayscaleImageSettings(const ImageSettings &settings)
Set optimization related settings for grayscale image.
bool operator !=(const MonoImageSettings &other) const
Not equal operator.
StretchMode
Enumeration for stretch mode.
Definition: fs_optimization.h:393
When this is set, that means to do default stretching.
Definition: fs_optimization.h:657
Definition: fs_optimization.h:896
Compression mode: jbig2 lossless.
Definition: fs_optimization.h:1246
When this is set, that means not to do halftone for shrinking or rotating.
Definition: fs_optimization.h:401
void SetImageDPI(int32 dpi)
Set the DPI value as the target compressed value for compressing monochrome images in a PDF document.
Compression quality: Maximum.
Definition: fs_optimization.h:383
uint32 named_destnations
Total size of named destinations in bytes.
Definition: fs_optimization.h:157
void SetCleanUpOptions(foxit::uint32 clean_up_options)
Set optimization related options for cleaning up.
Compression mode: jbig2.
Definition: fs_optimization.h:619
static common::Progressive OptimizeScannedPDF(const pdf::PDFDoc &doc, const OptimizeScannedPDFSettings &settings, ImageCompressionCallback *image_compress_callback, common::PauseCallback *pause)
Optimize the scanned PDF document with specified optimizers settings.
Discard bookmarks.
Definition: fs_optimization.h:957
void SetTileSize(int size)
Set the tile size for JPEG2000 compression modes, used for optimizing color/gray images in a PDF docu...
uint32 shading_pattern_infos
Total size of shading pattern information in bytes.
Definition: fs_optimization.h:192
ImageCompressMode
Enumeration for compression mode used for color or gray image.
Definition: fs_optimization.h:355
Compression mode: CCITT Group 4.
Definition: fs_optimization.h:1248
When this is set, that means to do without stretching.
Definition: fs_optimization.h:397
Discard document information and metadata.
Definition: fs_optimization.h:988
Discard document tags.
Definition: fs_optimization.h:968
uint32 thumbs
Total size of page thumbnails in bytes.
Definition: fs_optimization.h:213
MonoImageSettings & operator=(const MonoImageSettings &other)
Assign operator.
Compression mode: run-length.
Definition: fs_optimization.h:623
virtual void Release()=0
A callback function used to release current callback object itself.
Discard all alternate images.
Definition: fs_optimization.h:966
void SetQuality(MonoImageCompressQuality quality)
Set compression quality, used for optimizing monochrome images in a PDF document.
bool IsEmpty() const
Check whether current object is empty or not.
uint32 structure_infos
Total size of structural information in bytes.
Definition: fs_optimization.h:136
uint32 cross_ref_tables
Total size of the cross-reference table in bytes.
Definition: fs_optimization.h:206
CleanUpOptions
Enumeration for cleaning up options.
Definition: fs_optimization.h:921
UnembeddedFontSettings & operator=(const UnembeddedFontSettings &other)
Assign operator.
void SetQuality(ImageCompressQuality quality)
Set the quality for lossy compression modes, used for optimizing color/gray images in a PDF document.
Remove invalid links.
Definition: fs_optimization.h:929
Compression quality: Maximum, only for e_ImageCompressHigh compress mode.
Definition: fs_optimization.h:647
Discard embedded search index.
Definition: fs_optimization.h:970
Compression mode: high.
Definition: fs_optimization.h:357
bool operator !=(const OptimizeScannedPDFSettings &other) const
Not equal operator.