Resources.h
1 #pragma once
2 // Copyright (c) 2001-2024 Aspose Pty Ltd. All Rights Reserved.
3 
4 #include <system/string.h>
5 #include <cstdint>
6 
7 #include "Aspose.PDF.Cpp/ISupportsMemoryCleanup.h"
8 #include "Aspose.PDF.Cpp/aspose_pdf_api_defs.h"
9 
10 namespace Aspose
11 {
12 namespace Pdf
13 {
14 namespace Annotations
15 {
16 class Annotation;
17 class FreeTextAnnotation;
18 class HighlightAnnotation;
19 class StampAnnotation;
20 class WatermarkAnnotation;
21 } // namespace Annotations
22 class ApsToPdfConverter;
23 class Artifact;
24 class DataUtils;
25 class Document;
26 namespace Drawing
27 {
28 class Shape;
29 } // namespace Drawing
30 namespace Engine
31 {
32 namespace CommonData
33 {
34 namespace Graphics
35 {
36 namespace Patterns
37 {
38 class IPattern;
39 class TilingPattern;
40 } // namespace Patterns
41 } // namespace Graphics
42 namespace PageContent
43 {
44 class IResourceDictionary;
45 namespace Operators
46 {
47 namespace InlineImages
48 {
49 class EndInlineObject;
50 } // namespace InlineImages
51 } // namespace Operators
52 } // namespace PageContent
53 namespace Text
54 {
55 namespace Fonts
56 {
57 namespace Utilities
58 {
59 class DocumentFontsCollector;
60 class FontCreator;
61 class PageAnnotationProcessor;
62 } // namespace Utilities
63 } // namespace Fonts
64 namespace Segmenting
65 {
66 class PhysicalTextSegment;
67 class TextSegmentBuilder;
68 } // namespace Segmenting
69 } // namespace Text
70 } // namespace CommonData
71 namespace Data
72 {
73 class IPdfDictionary;
74 class IPdfObject;
75 class IPdfPrimitive;
76 } // namespace Data
77 namespace IO
78 {
79 namespace ConvertStrategies
80 {
81 namespace ConvertHelpers
82 {
83 class FontUtils;
84 class LowLevelFontSubstitutor;
85 } // namespace ConvertHelpers
86 namespace GlyphWidths
87 {
88 class TrueTypeGlyphWidthsProcessor;
89 } // namespace GlyphWidths
90 namespace PdfA
91 {
92 class PdfAOperatorValidator;
93 } // namespace PdfA
94 class PdfAConvertStrategy;
95 class PdfConvertStrategy;
96 class PdfUaConvertStrategy;
97 class PdfXConvertStrategy;
98 class SearchablePdfConvertStrategy;
99 class TransparentContentRemoval;
100 class VersionConvertStrategy;
101 } // namespace ConvertStrategies
102 } // namespace IO
103 namespace Presentation
104 {
105 class ColorDetectHelper;
106 namespace IndependentImpl
107 {
108 namespace ColorInitializerStrategies
109 {
110 class TextToGrayConversion;
111 } // namespace ColorInitializerStrategies
112 } // namespace IndependentImpl
113 } // namespace Presentation
114 } // namespace Engine
115 namespace Facades
116 {
117 class FormEditor;
118 class PdfContentEditor;
119 class PdfExtractor;
120 class PdfFileEditor;
121 } // namespace Facades
122 namespace Forms
123 {
124 class Form;
125 class TextModel;
126 } // namespace Forms
127 class ImagePlacementAbsorber;
128 namespace Interchange
129 {
130 class ContentSequencePage;
131 class ContentSequenceXForm;
132 } // namespace Interchange
133 namespace OFD
134 {
135 namespace Converters
136 {
137 class PageBlockConverter;
138 } // namespace Converters
139 } // namespace OFD
140 class OperatorCollection;
141 namespace Optimization
142 {
143 class ImageCompressor;
144 } // namespace Optimization
145 class Page;
146 namespace PageModel
147 {
148 class GraphicElement;
149 class ImageElement;
150 class TextElement;
151 } // namespace PageModel
152 class PdfPageStamp;
153 class Resources;
154 class RgbToDeviceGrayConversionStrategy;
155 class Stamp;
156 namespace Structure
157 {
158 class FigureElement;
159 } // namespace Structure
160 namespace Tagged
161 {
162 class TaggedContent;
163 } // namespace Tagged
164 namespace Tests
165 {
166 namespace Collections
167 {
168 class ResourcesTests;
169 } // namespace Collections
170 namespace Engine
171 {
172 namespace CommonData
173 {
174 namespace PageContent
175 {
176 namespace Operators
177 {
178 namespace TextShowing
179 {
180 class TextShowingTests;
181 } // namespace TextShowing
182 } // namespace Operators
183 } // namespace PageContent
184 } // namespace CommonData
185 } // namespace Engine
186 namespace Layers
187 {
188 class LayersTests;
189 } // namespace Layers
190 class PdfFile_2_0Test;
191 class RegressionTests_v10_5;
192 class RegressionTests_v11_7;
193 class RegressionTests_v16_12;
194 class RegressionTests_v17_2;
195 class RegressionTests_v19_12;
196 class RegressionTests_v19_3;
197 class RegressionTests_v19_5;
198 class RegressionTests_v20_06;
199 class RegressionTests_v20_07;
200 class RegressionTests_v22_10;
201 class RegressionTests_v23_09;
202 class RegressionTests_v23_10;
203 class RegressionTests_v6_3;
204 class RegressionTests_v6_9;
205 class RegressionTests_v7_0;
206 class RegressionTests_v7_3;
207 class RegressionTests_v7_6;
208 class RegressionTests_v7_8;
209 class RegressionTests_v8_0;
210 class RegressionTests_v8_2;
211 class RegressionTests_v8_6;
212 class RegressionTests_v8_7;
213 class RegressionTests_v9_2;
214 class RegressionTests_v9_9;
215 namespace Text
216 {
217 class TextBuilderTests;
218 } // namespace Text
219 } // namespace Tests
220 namespace Text
221 {
222 class FontCollection;
223 class TextExtractionVerifier;
224 class TextFragmentAbsorber;
225 } // namespace Text
226 namespace Vector
227 {
228 namespace Extraction
229 {
230 class ApsSvgRenderer;
231 } // namespace Extraction
232 class GraphicState;
233 class СumulativeGraphicState;
234 } // namespace Vector
235 class XForm;
236 class XFormCollection;
237 class XImage;
238 class XImageCollection;
239 } // namespace Pdf
240 } // namespace Aspose
241 namespace System
242 {
243 namespace Collections
244 {
245 namespace Generic
246 {
247 template <typename, typename> class Dictionary;
248 } // namespace Generic
249 } // namespace Collections
250 namespace Drawing
251 {
252 class Image;
253 } // namespace Drawing
254 } // namespace System
255 
256 namespace Aspose {
257 
258 namespace Pdf {
259 
263 class ASPOSE_PDF_SHARED_CLASS Resources final : public Aspose::Pdf::ISupportsMemoryCleanup
264 {
265  typedef Resources ThisType;
267 
268  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
269  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
270 
271  friend class Aspose::Pdf::ApsToPdfConverter;
272  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsCollector;
273  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::FontCreator;
274  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::ConvertHelpers::LowLevelFontSubstitutor;
275  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::PageAnnotationProcessor;
276  friend class Aspose::Pdf::Interchange::ContentSequencePage;
277  friend class Aspose::Pdf::Interchange::ContentSequenceXForm;
278  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfUaConvertStrategy;
279  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfConvertStrategy;
280  friend class Aspose::Pdf::Optimization::ImageCompressor;
282  friend class Aspose::Pdf::Engine::Presentation::IndependentImpl::ColorInitializerStrategies::TextToGrayConversion;
285  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::ConvertHelpers::FontUtils;
286  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::GlyphWidths::TrueTypeGlyphWidthsProcessor;
287  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfXConvertStrategy;
288  friend class Aspose::Pdf::PageModel::GraphicElement;
289  friend class Aspose::Pdf::PageModel::ImageElement;
290  friend class Aspose::Pdf::PageModel::TextElement;
291  friend class Aspose::Pdf::Engine::Presentation::ColorDetectHelper;
293  friend class Aspose::Pdf::Engine::CommonData::Graphics::Patterns::TilingPattern;
294  friend class Aspose::Pdf::Engine::CommonData::PageContent::Operators::InlineImages::EndInlineObject;
295  friend class Aspose::Pdf::Engine::CommonData::Text::Segmenting::PhysicalTextSegment;
296  friend class Aspose::Pdf::Engine::CommonData::Text::Segmenting::TextSegmentBuilder;
297  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfAConvertStrategy;
298  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::SearchablePdfConvertStrategy;
299  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::VersionConvertStrategy;
300  friend class Aspose::Pdf::Tagged::TaggedContent;
301  friend class Aspose::Pdf::Text::TextExtractionVerifier;
302  friend class Aspose::Pdf::Document;
308  friend class Aspose::Pdf::Stamp;
313  friend class Aspose::Pdf::Page;
317  friend class Aspose::Pdf::XForm;
319  friend class Aspose::Pdf::XImage;
321  friend class Aspose::Pdf::DataUtils;
323  friend class Aspose::Pdf::Forms::TextModel;
324  friend class Aspose::Pdf::Artifact;
326  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::TransparentContentRemoval;
327  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfA::PdfAOperatorValidator;
328  friend class Aspose::Pdf::OFD::Converters::PageBlockConverter;
329  friend class Aspose::Pdf::Vector::Extraction::ApsSvgRenderer;
330  friend class Aspose::Pdf::Vector::СumulativeGraphicState;
331  friend class Aspose::Pdf::Tests::Collections::ResourcesTests;
332  friend class Aspose::Pdf::Tests::Text::TextBuilderTests;
333  friend class Aspose::Pdf::Tests::Engine::CommonData::PageContent::Operators::TextShowing::TextShowingTests;
334  friend class Aspose::Pdf::Tests::RegressionTests_v7_0;
335  friend class Aspose::Pdf::Tests::RegressionTests_v7_6;
336  friend class Aspose::Pdf::Tests::RegressionTests_v8_6;
337  friend class Aspose::Pdf::Tests::RegressionTests_v9_2;
338  friend class Aspose::Pdf::Tests::RegressionTests_v9_9;
339  friend class Aspose::Pdf::Tests::RegressionTests_v10_5;
340  friend class Aspose::Pdf::Tests::RegressionTests_v11_7;
341  friend class Aspose::Pdf::Tests::RegressionTests_v16_12;
342  friend class Aspose::Pdf::Tests::RegressionTests_v17_2;
343  friend class Aspose::Pdf::Tests::RegressionTests_v19_3;
344  friend class Aspose::Pdf::Tests::RegressionTests_v6_3;
345  friend class Aspose::Pdf::Tests::RegressionTests_v6_9;
346  friend class Aspose::Pdf::Tests::RegressionTests_v7_3;
347  friend class Aspose::Pdf::Tests::RegressionTests_v7_8;
348  friend class Aspose::Pdf::Tests::RegressionTests_v8_0;
349  friend class Aspose::Pdf::Tests::RegressionTests_v8_2;
350  friend class Aspose::Pdf::Tests::RegressionTests_v8_7;
351  friend class Aspose::Pdf::Tests::RegressionTests_v19_5;
352  friend class Aspose::Pdf::Tests::RegressionTests_v19_12;
353  friend class Aspose::Pdf::Tests::RegressionTests_v20_06;
354  friend class Aspose::Pdf::Tests::RegressionTests_v20_07;
355  friend class Aspose::Pdf::Tests::RegressionTests_v22_10;
356  friend class Aspose::Pdf::Tests::RegressionTests_v23_09;
357  friend class Aspose::Pdf::Tests::RegressionTests_v23_10;
358  friend class Aspose::Pdf::Tests::PdfFile_2_0Test;
359  friend class Aspose::Pdf::Tests::Layers::LayersTests;
360 
361 public:
362 
366  class ASPOSE_PDF_SHARED_CLASS ExtGStateValue : public System::Object
367  {
368  typedef ExtGStateValue ThisType;
369  typedef System::Object BaseType;
370 
371  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
372  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
373 
375 
376  public:
377 
378  ASPOSE_PDF_SHARED_API System::String get_Name() const;
379  ASPOSE_PDF_SHARED_API double get_CA() const;
380  ASPOSE_PDF_SHARED_API double get_ca() const;
381 
382  ASPOSE_PDF_SHARED_API ExtGStateValue(System::String name);
383 
384  protected:
385 
386  ASPOSE_PDF_SHARED_API void set_CA(double value);
387  ASPOSE_PDF_SHARED_API void set_ca(double value);
388 
389  private:
390 
391  System::String _name;
392  double _ca1;
393  double _ca2;
394 
395  };
396 
397 
398 public:
399 
403  ASPOSE_PDF_SHARED_API System::SharedPtr<XFormCollection> get_Forms();
407  ASPOSE_PDF_SHARED_API System::SharedPtr<XImageCollection> get_Images();
411  ASPOSE_PDF_SHARED_API System::SharedPtr<Text::FontCollection> get_Fonts();
412 
418  ASPOSE_PDF_SHARED_API System::SharedPtr<Text::FontCollection> GetFonts(bool CreateIfAbsent);
424  ASPOSE_PDF_SHARED_API void cpp_set_xfrom_weak(System::SharedPtr<XForm> from);
428  ASPOSE_PDF_SHARED_API void FreeMemory() override;
429 
430 protected:
431 
436 
449  bool get_IsCommonResource();
457  void set_IsCommonResource(bool value);
460 
464  void ClearFormsCache();
465  void ClearImagesCache();
466  void ClearFontsCache();
467  void InvalidateForms();
469  static void ReleaseResourcesFor(const System::SharedPtr<Page>& page);
488  bool IsXObjectCommon(int32_t imageObjectId);
490 
491  virtual ASPOSE_PDF_SHARED_API ~Resources();
492 
493 private:
494 
498  bool _fontsInitialized;
499  bool _imagesInitialized;
500  bool _xformsInitialized;
504  static const int32_t FALSE;
505  static const int32_t TRUE;
506  static const int32_t UNKNOWN;
507  int32_t _IsCommonResource;
510 
512 
513  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Resources, CODEPORTING_ARGS(System::SharedPtr<Aspose::Pdf::Document> document, System::SharedPtr<Engine::Data::IPdfDictionary> resources));
515 
516 };
517 
518 } // namespace Pdf
519 } // namespace Aspose
520 
521 
String class used across the library. Is a substitute for C# System.String when translating code...
Definition: string.h:121
System::SharedPtr< Engine::Data::IPdfDictionary > get_EngineDict() const
Represents rubber stamp annotation. This type of annotation displays text or graphics intended to loo...
Definition: StampAnnotation.h:86
An abstract class for various kinds of stamps which come as descendants.
Definition: Stamp.h:48
System::SharedPtr< OperatorCollection > _Contents
Definition: Resources.h:435
Class representing form object.
Definition: Form.h:167
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:620
Definition: Artifact.h:67
void set_Contents(System::SharedPtr< OperatorCollection > value)
ASPOSE_PDF_SHARED_API void cpp_set_xfrom_weak(System::SharedPtr< XForm > from)
System::SharedPtr< OperatorCollection > get_Contents() const
ASPOSE_PDF_SHARED_API System::SharedPtr< XImageCollection > get_Images()
Gets Images images collection
Represents a free text annotation that displays text directly on the page. Unlike an ordinary text an...
Definition: FreeTextAnnotation.h:91
static System::SharedPtr< Resources > GetResourcesFor(System::SharedPtr< Page > page)
bool _isIgnoreResourceFontErrors
Definition: Resources.h:432
System::SharedPtr< Engine::Data::IPdfDictionary > _EngineDict
Definition: Resources.h:433
Represents a highlight annotation that highlights a range of text in the document.
Definition: HighlightAnnotation.h:67
static void ReleaseResourcesFor(const System::SharedPtr< Page > &page)
System::SharedPtr< Engine::CommonData::Graphics::Patterns::IPattern > FindPattern(System::String patternName)
Represents shape - the base graphics object.
Definition: Shape.h:60
Represents an absorber object of text fragments. Performs text search and provides access to search r...
Definition: TextFragmentAbsorber.h:81
static System::SharedPtr< Resources > Create(System::SharedPtr< Aspose::Pdf::Document > doc, System::SharedPtr< Engine::CommonData::PageContent::IResourceDictionary > res)
ASPOSE_PDF_SHARED_API System::SharedPtr< System::Collections::Generic::Dictionary< System::String, System::SharedPtr< Resources::ExtGStateValue > > > GetExtGStates()
Gets all ExGStates from resources.
bool IsXObjectCommon(int32_t imageObjectId)
Determines whether common images are existed in the document.
Definition: signed_info.h:13
Represents rgb to device gray color spaces conversion strategy.
Definition: RgbToDeviceGrayConversionStrategy.h:46
Represents ExtGStates with some values.
Definition: Resources.h:366
System::SharedPtr< Engine::Data::IPdfDictionary > CreateEntry(System::String section, System::String &name)
Create resource entry in the desired section
Represents graphic state of the current GraphicElement.
Definition: GraphicState.h:57
Class describes Watermark annotation object.
Definition: WatermarkAnnotation.h:73
void set_IsCommonResource(bool value)
True if this resources are common i.e. are shared for several pages (placed in pages dictionary as in...
ASPOSE_PDF_SHARED_API void FreeMemory() override
Clears cached data, frees memory etc.
Class representing page resources.
Definition: Resources.h:263
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: fwd.h:22
Represents an absorber object of image placement objects. Performs search of image usages and provide...
Definition: ImagePlacementAbsorber.h:77
Class representing page of PDF document.
Definition: Page.h:381
virtual ASPOSE_PDF_SHARED_API ~Resources()
Definition: AFRelationship.h:4
ASPOSE_PDF_SHARED_API System::SharedPtr< Text::FontCollection > get_Fonts()
Gets Fonts resources collection
Class representing image X-Object.
Definition: XImage.h:173
The interface defines ways to cleanup memory in case mass operations.
Definition: ISupportsMemoryCleanup.h:13
static System::SharedPtr< System::Drawing::Image > GetImage(System::String name, System::SharedPtr< Engine::Data::IPdfDictionary > resources)
means loading document in OFD format.
bool get_IsCommonResource()
True if this resources are common i.e. are shared for several pages (placed in pages dictionary as in...
Class represents stamp which uses PDF page as stamp.
Definition: PdfPageStamp.h:47
System::SharedPtr< Aspose::Pdf::Document > get_Document() const
The coordinates are in the page coordinate context.
Class for extracting images and text from PDF document.
Definition: PdfExtractor.h:83
Implements operations with PDF file: concatenation, splitting, extracting pages, making booklet...
Definition: PdfFileEditor.h:105
Class representing XImage collection.
Definition: XImageCollection.h:159
System::SharedPtr< Engine::Data::IPdfObject > get_Source() const
void set_Source(System::SharedPtr< Engine::Data::IPdfObject > value)
Class represents collection of XFormCollection.
Definition: XFormCollection.h:79
Class representing logical structure figure.
Definition: FigureElement.h:51
Represents a class to edit PDF file&#39;s content.
Definition: PdfContentEditor.h:89
Class represent XForm
Definition: XForm.h:195
ASPOSE_PDF_SHARED_API System::SharedPtr< Text::FontCollection > GetFonts(bool CreateIfAbsent)
Returns fonts collection. If resources don&#39;t contain fonts entry it will be created in depends of Cre...
Class representing annotation object.
Definition: Annotation.h:303
System::SharedPtr< Engine::CommonData::PageContent::IResourceDictionary > get_ResourceDictionary() const
ASPOSE_PDF_SHARED_API System::SharedPtr< XFormCollection > get_Forms()
Gets Forms forms collection
System::SharedPtr< Engine::CommonData::PageContent::IResourceDictionary > _ResourceDictionary
Definition: Resources.h:434
void ClearFormsCache()
Clears cached forms (this required when fields are flattened)
Class represents PDF Artifact object.
Definition: Artifact.h:90
Class for editing forms (ading/deleting field etc)
Definition: FormEditor.h:73
Whole PDF file will be submitted.