PdfFormatConversionOptions.h
1 #pragma once
2 // Copyright (c) 2001-2024 Aspose Pty Ltd. All Rights Reserved.
3 
4 #include <system/enum_helpers.h>
5 #include <system/array.h>
6 #include <cstdint>
7 
8 #include "Aspose.PDF.Cpp/aspose_pdf_api_defs.h"
9 
10 namespace Aspose
11 {
12 namespace Pdf
13 {
14 enum class ConvertErrorAction;
15 enum class ConvertSoftMaskAction;
16 enum class ConvertTransparencyAction;
17 class Document;
18 namespace Engine
19 {
20 namespace IO
21 {
22 namespace ConvertStrategies
23 {
24 class PdfAConvertStrategy;
25 class PdfConvertStrategy;
26 class PdfUaConvertStrategy;
27 class TaggedPdfConvertStrategy;
28 class VersionConvertStrategy;
29 } // namespace ConvertStrategies
30 } // namespace IO
31 } // namespace Engine
32 class PdfANonSpecificationFlags;
33 namespace PdfAOptionClasses
34 {
35 class FontEmbeddingOptions;
36 class ToUnicodeProcessingRules;
37 } // namespace PdfAOptionClasses
38 class PdfASymbolicFontEncodingStrategy;
39 enum class PdfFormat;
40 } // namespace Pdf
41 } // namespace Aspose
42 namespace System
43 {
44 namespace Collections
45 {
46 namespace Generic
47 {
48 template <typename> class List;
49 template <typename> class Queue;
50 } // namespace Generic
51 } // namespace Collections
52 namespace IO
53 {
54 class Stream;
55 } // namespace IO
56 namespace Xml
57 {
58 class XmlTextWriter;
59 } // namespace Xml
60 } // namespace System
61 
62 namespace Aspose {
63 
64 namespace Pdf {
65 
69 class ASPOSE_PDF_SHARED_CLASS PdfFormatConversionOptions : public System::Object
70 {
72  typedef System::Object BaseType;
73 
74  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
75  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
76 
77  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfUaConvertStrategy;
78  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfConvertStrategy;
79  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfAConvertStrategy;
80  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::TaggedPdfConvertStrategy;
81  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::VersionConvertStrategy;
82  friend class Aspose::Pdf::Document;
83 
84 public:
85 
91  enum class SegmentAlignStrategy : uint8_t
92  {
96  None = 0,
100  RestoreSegmentBounds = 1
101  };
102 
110  {
114  None = 0,
119  SurroundPuaTextWithEmptyActualText,
127  SubstitutePuaSymbols
128  };
129 
136  enum class RemoveFontsStrategy : uint8_t
137  {
144  RemoveDuplicatedFonts = 4,
166  RemoveSimilarFontsWithDifferentWidths = 1,
175  SubsetFonts = 2
176  };
177 
178 
179 public:
180 
184  ASPOSE_PDF_SHARED_API bool get_IsAsyncImageStreamsConversionMode() const;
188  ASPOSE_PDF_SHARED_API void set_IsAsyncImageStreamsConversionMode(bool value);
192  ASPOSE_PDF_SHARED_API bool get_IsLowMemoryMode() const;
196  ASPOSE_PDF_SHARED_API void set_IsLowMemoryMode(bool value);
200  ASPOSE_PDF_SHARED_API PdfFormat get_Format() const;
204  ASPOSE_PDF_SHARED_API void set_Format(PdfFormat value);
208  ASPOSE_PDF_SHARED_API System::String get_LogFileName() const;
212  ASPOSE_PDF_SHARED_API void set_LogFileName(System::String value);
216  ASPOSE_PDF_SHARED_API System::SharedPtr<System::IO::Stream> get_LogStream() const;
220  ASPOSE_PDF_SHARED_API void set_LogStream(System::SharedPtr<System::IO::Stream> value);
224  ASPOSE_PDF_SHARED_API ConvertErrorAction get_ErrorAction() const;
228  ASPOSE_PDF_SHARED_API void set_ErrorAction(ConvertErrorAction value);
232  ASPOSE_PDF_SHARED_API ConvertTransparencyAction get_TransparencyAction() const;
236  ASPOSE_PDF_SHARED_API void set_TransparencyAction(ConvertTransparencyAction value);
240  ASPOSE_PDF_SHARED_API Aspose::Pdf::ConvertSoftMaskAction get_ConvertSoftMaskAction() const;
244  ASPOSE_PDF_SHARED_API void set_ConvertSoftMaskAction(Aspose::Pdf::ConvertSoftMaskAction value);
248  static ASPOSE_PDF_SHARED_API System::SharedPtr<PdfFormatConversionOptions> get_Default();
253  ASPOSE_PDF_SHARED_API System::SharedPtr<PdfANonSpecificationFlags> get_NonSpecificationCases() const;
258  ASPOSE_PDF_SHARED_API System::SharedPtr<PdfASymbolicFontEncodingStrategy> get_SymbolicFontEncodingStrategy() const;
263  ASPOSE_PDF_SHARED_API void set_SymbolicFontEncodingStrategy(System::SharedPtr<PdfASymbolicFontEncodingStrategy> value);
272  ASPOSE_PDF_SHARED_API bool get_AlignText() const;
281  ASPOSE_PDF_SHARED_API void set_AlignText(bool value);
282 
287 
291  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions::PuaProcessingStrategy get_PuaTextProcessingStrategy() const;
295  ASPOSE_PDF_SHARED_API void set_PuaTextProcessingStrategy(PdfFormatConversionOptions::PuaProcessingStrategy value);
303  ASPOSE_PDF_SHARED_API bool get_OptimizeFileSize() const;
311  ASPOSE_PDF_SHARED_API void set_OptimizeFileSize(bool value);
318  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions::RemoveFontsStrategy get_ExcludeFontsStrategy() const;
325  ASPOSE_PDF_SHARED_API void set_ExcludeFontsStrategy(PdfFormatConversionOptions::RemoveFontsStrategy value);
329  ASPOSE_PDF_SHARED_API System::SharedPtr<Aspose::Pdf::PdfAOptionClasses::FontEmbeddingOptions> get_FontEmbeddingOptions() const;
333  ASPOSE_PDF_SHARED_API System::SharedPtr<PdfAOptionClasses::ToUnicodeProcessingRules> get_UnicodeProcessingRules() const;
337  ASPOSE_PDF_SHARED_API void set_UnicodeProcessingRules(System::SharedPtr<PdfAOptionClasses::ToUnicodeProcessingRules> value);
341  ASPOSE_PDF_SHARED_API System::String get_IccProfileFileName() const;
345  ASPOSE_PDF_SHARED_API void set_IccProfileFileName(System::String value);
350  ASPOSE_PDF_SHARED_API System::ArrayPtr<System::String> get_NotAccessibleFonts();
354  ASPOSE_PDF_SHARED_API bool get_IsTransferInfo() const;
358  ASPOSE_PDF_SHARED_API void set_IsTransferInfo(bool value);
359 
366  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(System::String outputLogFileName, PdfFormat format, ConvertErrorAction action);
372  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(System::String outputLogFileName, PdfFormat format);
377  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(PdfFormat format);
383  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(PdfFormat format, ConvertErrorAction action);
391  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(System::String outputLogFileName, PdfFormat format, ConvertErrorAction action, ConvertTransparencyAction transparencyAction);
398  ASPOSE_PDF_SHARED_API PdfFormatConversionOptions(System::SharedPtr<System::IO::Stream> outputLogStream, PdfFormat format, ConvertErrorAction action);
399 
400 protected:
401 
403 
405  System::SharedPtr<Aspose::Pdf::Document> get_Document() const;
406  bool get_OnlyValidation() const;
407  System::String get_DefaultLogFileName() const;
408  bool get_RemoveDuplicatedFonts();
409  bool get_RemoveSimilarFontsWithDifferentWidths();
410  bool get_SubsetFonts();
411 
412  void SetAdditionalParameters(System::SharedPtr<System::Xml::XmlTextWriter> xml, System::SharedPtr<Aspose::Pdf::Document> doc, bool onlyValidation);
414  void AddNotAccessibleFont(System::String fontName);
415 
416 private:
417 
418  PdfFormat _format;
419  System::String _outLogFileName;
421  ConvertErrorAction _action;
422  ConvertTransparencyAction _transparencyAction;
423  Aspose::Pdf::ConvertSoftMaskAction _softMaskAction;
424  static System::SharedPtr<PdfFormatConversionOptions> _defaultOptions;
425  static const System::String DefaultLogName;
428  bool _onlyValidation;
429  bool _alignText;
430  bool isLowMemoryMode;
431  PdfFormatConversionOptions::PuaProcessingStrategy _puaProcessingTextStrategy;
432  bool _optimizeFileSize;
433  System::SharedPtr<PdfANonSpecificationFlags> _nonSpecificationFlags;
434  System::SharedPtr<PdfASymbolicFontEncodingStrategy> _symbolicEncodingStrategy;
437  System::String _iccProfileFileName;
439  bool _asyncImageStreamsConversionMode;
440  bool _isTransferInfo;
441  PdfFormatConversionOptions::RemoveFontsStrategy pr_ExcludeFontsStrategy;
442 
443  static System::SharedPtr<PdfFormatConversionOptions> CreateDefaultOptions();
444  void InitBase();
445 
446 };
447 
449 DECLARE_USING_GLOBAL_OPERATORS
456 class ASPOSE_PDF_SHARED_CLASS PdfANonSpecificationFlags : public System::Object
457 {
459  typedef System::Object BaseType;
460 
461  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
462  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
463 
464 public:
465 
472  ASPOSE_PDF_SHARED_API bool get_CheckDifferentNamesInFontDictionaries() const;
479  ASPOSE_PDF_SHARED_API void set_CheckDifferentNamesInFontDictionaries(bool value);
480 
484  ASPOSE_PDF_SHARED_API PdfANonSpecificationFlags();
485 
486 private:
487 
488  bool pr_CheckDifferentNamesInFontDictionaries;
489 
490 };
491 
537 class ASPOSE_PDF_SHARED_CLASS PdfASymbolicFontEncodingStrategy : public System::Object
538 {
540  typedef System::Object BaseType;
541 
542  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
543  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
544 
545 public:
546 
553  class ASPOSE_PDF_SHARED_CLASS QueueItem : public System::Object
554  {
555  typedef QueueItem ThisType;
556  typedef System::Object BaseType;
557 
558  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
559  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
560 
561  public:
562 
566  enum class CMapEncodingTableType : int16_t
567  {
571  WindowsUnicodeTable = 0,
575  WindowsSymbolicTable,
579  MacTable,
583  UnicodeTable
584  };
585 
586 
587  public:
588 
592  ASPOSE_PDF_SHARED_API PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType get_CMapEncodingTable() const;
596  ASPOSE_PDF_SHARED_API void set_CMapEncodingTable(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType value);
600  ASPOSE_PDF_SHARED_API uint16_t get_PlatformId() const;
604  ASPOSE_PDF_SHARED_API void set_PlatformId(uint16_t value);
608  ASPOSE_PDF_SHARED_API uint16_t get_PlatformSpecificId() const;
612  ASPOSE_PDF_SHARED_API void set_PlatformSpecificId(uint16_t value);
613 
617  ASPOSE_PDF_SHARED_API QueueItem();
623  ASPOSE_PDF_SHARED_API QueueItem(uint16_t platformID, uint16_t platformSpecificID);
628  ASPOSE_PDF_SHARED_API QueueItem(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType cmapTable);
629 
630  private:
631 
633  uint16_t pr_PlatformId;
634  uint16_t pr_PlatformSpecificId;
635 
636  };
637 
638 
639 public:
640 
645  ASPOSE_PDF_SHARED_API PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType get_PreferredCmapEncodingTable() const;
650  ASPOSE_PDF_SHARED_API void set_PreferredCmapEncodingTable(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType value);
654  ASPOSE_PDF_SHARED_API const System::SharedPtr<System::Collections::Generic::Queue<System::SharedPtr<PdfASymbolicFontEncodingStrategy::QueueItem>>>& get_CmapEncodingTablesPriorityQueue() const;
658  ASPOSE_PDF_SHARED_API void set_CmapEncodingTablesPriorityQueue(System::SharedPtr<System::Collections::Generic::Queue<System::SharedPtr<PdfASymbolicFontEncodingStrategy::QueueItem>>> value);
659 
663  ASPOSE_PDF_SHARED_API PdfASymbolicFontEncodingStrategy();
668  ASPOSE_PDF_SHARED_API PdfASymbolicFontEncodingStrategy(System::SharedPtr<System::Collections::Generic::Queue<System::SharedPtr<PdfASymbolicFontEncodingStrategy::QueueItem>>> priorityQueue);
673  ASPOSE_PDF_SHARED_API PdfASymbolicFontEncodingStrategy(PdfASymbolicFontEncodingStrategy::QueueItem::CMapEncodingTableType preferredEncodingTable);
674 
675 private:
676 
679 
680 };
681 
682 } // namespace Pdf
683 } // namespace Aspose
684 
685 DECLARE_USING_ENUM_OPERATORS(Aspose::Pdf);
686 
687 
688 
RemoveFontsStrategy
Some documens have large size after converison into PDF/A format. To reduce file size for these docum...
Definition: PdfFormatConversionOptions.h:136
This class holds flags to control PDF/A conversion for cases when source PDF document doesn&#39;t corresp...
Definition: PdfFormatConversionOptions.h:456
PdfFormatConversionOptions::SegmentAlignStrategy AlignStrategy
Strategy to align text. This parameter has sense only when flag AlignText is set to true...
Definition: PdfFormatConversionOptions.h:286
String class used across the library. Is a substitute for C# System.String when translating code...
Definition: string.h:121
class ASPOSECPP_SHARED_CLASS List
Definition: ienumerable.h:17
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:64
Class representing PDF document
Definition: Document.h:625
Definition: Artifact.h:67
Specifies encoding subtable. Each encoding subtable has unique combination of parameters (PlatformID...
Definition: PdfFormatConversionOptions.h:553
Queue class forward declaration.
Definition: PdfFileEditor.h:80
PdfFormat
This class represents an pdf format.
Definition: PdfFormat.h:16
represents set of options for convert PDF document
Definition: PdfFormatConversionOptions.h:69
Definition: AFRelationship.h:6
ConvertErrorAction
This class represents action for conversion errors.
Definition: ConvertErrorAction.h:11
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: fwd.h:22
means saving in XML format
ConvertSoftMaskAction
This action represents actions for conversion of images with soft mask.
Definition: ConvertSoftMaskAction.h:10
DECLARE_ENUM_OPERATORS(Aspose::Pdf::WarningType)
Definition: AFRelationship.h:4
bool PuaProcessingTextStrategyExplicitlyDefined
Definition: PdfFormatConversionOptions.h:402
CMapEncodingTableType
Declares set of some known encoding subtables
Definition: PdfFormatConversionOptions.h:566
PuaProcessingStrategy
Some PDF documents have special unicode symbols, which are belonged to Private Use Area (PUA)...
Definition: PdfFormatConversionOptions.h:109
This class describes rules which can be used to tune process of copying encoding data for cases when ...
Definition: PdfFormatConversionOptions.h:537
SegmentAlignStrategy
Describes strategies used to align document text segments. Now only strategy to restore segments to o...
Definition: PdfFormatConversionOptions.h:91
ConvertTransparencyAction
This class represents action for conversion of transparency.
Definition: ConvertTransparencyAction.h:11
Whole PDF file will be submitted.