PageCollection.h
1 #pragma once
2 // Copyright (c) 2001-2024 Aspose Pty Ltd. All Rights Reserved.
3 
4 #include <system/collections/ienumerator.h>
5 #include <system/collections/ienumerable.h>
6 #include <system/collections/icollection.h>
7 #include <system/array.h>
8 #include <cstdint>
9 
10 #include "Aspose.PDF.Cpp/ISupportsMemoryCleanup.h"
11 #include "Aspose.PDF.Cpp/aspose_pdf_api_defs.h"
12 
13 namespace Aspose
14 {
15 namespace Pdf
16 {
17 namespace Annotations
18 {
19 class AnnotationSelector;
20 } // namespace Annotations
21 class Copier;
22 class Document;
23 namespace Engine
24 {
25 namespace CommonData
26 {
27 class IPage;
28 class IPages;
29 class IPageTreeNode;
30 namespace Text
31 {
32 namespace Fonts
33 {
34 namespace Utilities
35 {
36 class DocumentCIDType2FontContentUpdater;
37 class DocumentFontsCollector;
38 class DocumentFontsSubsetter;
39 class DocumentFontsSubstitutor;
40 class DocumentFontsUnembedder;
41 template <typename> class FontsRemover;
42 } // namespace Utilities
43 } // namespace Fonts
44 } // namespace Text
45 } // namespace CommonData
46 namespace Data
47 {
48 class IPdfDictionary;
49 class IPdfObject;
50 } // namespace Data
51 namespace IO
52 {
53 namespace ConvertStrategies
54 {
55 namespace ConvertHelpers
56 {
57 class LowLevelFontSubstitutor;
58 } // namespace ConvertHelpers
59 class PdfAConvertStrategy;
60 class PdfConvertStrategy;
61 class PdfXConvertStrategy;
62 } // namespace ConvertStrategies
63 } // namespace IO
64 } // namespace Engine
65 namespace Facades
66 {
67 class PdfFileEditor;
68 class PdfFileStamp;
69 class Stamp;
70 } // namespace Facades
71 class ImagePlacementAbsorber;
72 namespace LogicalStructure
73 {
74 class MCRElement;
75 } // namespace LogicalStructure
76 class Page;
77 class PageCollection;
78 class PageInfo;
79 class PageTreeBalancer;
80 class Paragraphs;
81 namespace Tagged
82 {
83 class TaggedContent;
84 class TaggedContext;
85 } // namespace Tagged
86 namespace Tests
87 {
88 namespace Facades
89 {
90 class DocumentTest;
91 } // namespace Facades
92 class RegressionTests_v11_2;
93 class RegressionTests_v12_0;
94 class RegressionTests_v12_1;
95 class RegressionTests_v17_9;
96 class RegressionTests_v20_09;
97 class RegressionTests_v7_0;
98 class RegressionTests_v8_6;
99 class RegressionTests_v8_9;
100 class RegressionTests_v9_0;
101 class RegressionTests_v9_1;
102 class RegressionTests_v9_9;
103 } // namespace Tests
104 namespace Text
105 {
106 class TextAbsorber;
107 class TextFragmentAbsorber;
108 } // namespace Text
109 } // namespace Pdf
110 namespace Utils
111 {
112 class UnrestrictedPageTreeNodeEnumerator;
113 } // namespace Utils
114 } // namespace Aspose
115 namespace System
116 {
117 namespace Collections
118 {
119 namespace Generic
120 {
121 template <typename, typename> class Dictionary;
122 template <typename> class List;
123 } // namespace Generic
124 } // namespace Collections
125 } // namespace System
126 
127 namespace Aspose {
128 
129 namespace Pdf {
130 
134 class ASPOSE_PDF_SHARED_CLASS PageCollection final : public System::Collections::Generic::ICollection<System::SharedPtr<Aspose::Pdf::Page>>, public Aspose::Pdf::ISupportsMemoryCleanup
135 {
136  typedef PageCollection ThisType;
139 
140  typedef ::System::BaseTypesInfo<BaseType, BaseType1> ThisTypeBaseTypesInfo;
141  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
142 
143  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsCollector;
144  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsSubstitutor;
145  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsSubsetter;
146  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsUnembedder;
148  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::ConvertHelpers::LowLevelFontSubstitutor;
149  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentCIDType2FontContentUpdater;
150  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfConvertStrategy;
151  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfXConvertStrategy;
152  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfAConvertStrategy;
154  friend class Aspose::Pdf::Tagged::TaggedContent;
155  friend class Aspose::Pdf::Tagged::TaggedContext;
156  friend class Aspose::Pdf::Document;
159  friend class Aspose::Pdf::Page;
161  friend class Aspose::Pdf::PageTreeBalancer;
162  friend class Aspose::Pdf::Tests::Facades::DocumentTest;
164  friend class Aspose::Pdf::Tests::RegressionTests_v7_0;
165  friend class Aspose::Pdf::Tests::RegressionTests_v8_6;
166  friend class Aspose::Pdf::Tests::RegressionTests_v8_9;
167  friend class Aspose::Pdf::Tests::RegressionTests_v9_0;
168  friend class Aspose::Pdf::Tests::RegressionTests_v9_1;
169  friend class Aspose::Pdf::Tests::RegressionTests_v9_9;
170  friend class Aspose::Pdf::Tests::RegressionTests_v11_2;
171  friend class Aspose::Pdf::Tests::RegressionTests_v12_0;
172  friend class Aspose::Pdf::Tests::RegressionTests_v12_1;
173  friend class Aspose::Pdf::Tests::RegressionTests_v17_9;
174  friend class Aspose::Pdf::Tests::RegressionTests_v20_09;
175 
176 protected:
177 
178  class PagesEnumerableUnrestricted : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Pdf::Page>>
179  {
180  typedef PagesEnumerableUnrestricted ThisType;
182 
183  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
184  RTTI_INFO_DECL();
185 
186  public:
187 
189 
191 
192  protected:
193 
194  virtual ~PagesEnumerableUnrestricted();
195 
196  private:
197 
198  System::WeakPtr<PageCollection> _pageCollection;
199 
200  };
201 
202 
203 private:
204 
205  class PagesEnumerator : public System::Collections::Generic::IEnumerator<System::SharedPtr<Aspose::Pdf::Page>>
206  {
207  typedef PagesEnumerator ThisType;
209 
210  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
211  RTTI_INFO_DECL();
212  CODEPORTING_ENUMERATOR_ITERATOR_METHODS_DECLARATION(CODEPORTING_ARGS(System::SharedPtr<Page>), CODEPORTING_NO_API_KEYWORD);
213 
214  public:
215 
216  const System::SharedPtr<Page>& get_Current() const override;
217 
218  PagesEnumerator(System::SharedPtr<PageCollection> pageCollection);
219 
220  bool MoveNext() override;
221  void Reset() override;
222  void Dispose() override;
223 
224  private:
225 
226  System::SharedPtr<PageCollection> _pageCollection;
227  int32_t cursor;
229 
230  bool MoveNextImplementation();
231  System::SharedPtr<Page>* GetCurrentElementPointer();
232 
233  };
234 
235  class PagesEnumeratorUnrestricted : public System::Collections::Generic::IEnumerator<System::SharedPtr<Aspose::Pdf::Page>>
236  {
237  typedef PagesEnumeratorUnrestricted ThisType;
239 
240  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
241  RTTI_INFO_DECL();
242  CODEPORTING_ENUMERATOR_ITERATOR_METHODS_DECLARATION(CODEPORTING_ARGS(System::SharedPtr<Page>), CODEPORTING_NO_API_KEYWORD);
243 
244  public:
245 
246  const System::SharedPtr<Page>& get_Current() const override;
247 
248  PagesEnumeratorUnrestricted(System::SharedPtr<PageCollection> pageCollection);
249 
250  bool MoveNext() override;
251  void Reset() override;
252  void Dispose() override;
253 
254  private:
255 
256  System::SharedPtr<PageCollection> _pageCollection;
257  int32_t cursor;
259 
260  bool MoveNextImplementation();
261  System::SharedPtr<Page>* GetCurrentElementPointer();
262 
263  };
264 
265  class GeneratorInformation : public System::Object
266  {
267  typedef GeneratorInformation ThisType;
268  typedef System::Object BaseType;
269 
270  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
271  RTTI_INFO_DECL();
272 
273  public:
274 
275  GeneratorInformation(System::SharedPtr<Page> page);
276 
277  void Assign(System::SharedPtr<Page> page);
278 
279  private:
280 
281  System::SharedPtr<Paragraphs> _paragraphs;
282  System::SharedPtr<PageInfo> _pageInfo;
283 
284  };
285 
286 
287 public:
288 
292  ASPOSE_PDF_SHARED_API int32_t get_Count() const override;
296  ASPOSE_PDF_SHARED_API bool get_IsSynchronized();
300  ASPOSE_PDF_SHARED_API System::SharedPtr<System::Object> get_SyncRoot() const;
304  ASPOSE_PDF_SHARED_API bool get_IsReadOnly() const override;
305 
311  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> CopyPage(System::SharedPtr<Page> entity);
315  ASPOSE_PDF_SHARED_API void Clear() override;
320  ASPOSE_PDF_SHARED_API void Delete(int32_t index);
324  ASPOSE_PDF_SHARED_API void Delete();
334  ASPOSE_PDF_SHARED_API int32_t IndexOf(System::SharedPtr<Page> entity) const;
340  //[Obfuscation(Feature = "virtualization", Exclude = false)]
341  ASPOSE_PDF_SHARED_API void CopyTo(System::ArrayPtr<System::SharedPtr<Page>> array, int32_t index) override;
346  ASPOSE_PDF_SHARED_API System::SharedPtr<System::Collections::Generic::IEnumerator<System::SharedPtr<Page>>> GetEnumerator() override;
351  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Annotations::AnnotationSelector> visitor);
356  ASPOSE_PDF_SHARED_API void Delete(System::ArrayPtr<int32_t> pages);
362  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Insert(int32_t pageNumber);
367  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Add();
372  ASPOSE_PDF_SHARED_API void Add(const System::SharedPtr<System::Collections::Generic::ICollection<System::SharedPtr<Page>>>& pages);
379  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Insert(int32_t pageNumber, System::SharedPtr<Page> entity);
380 
386  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> idx_get(int32_t index);
387 
392  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<ImagePlacementAbsorber> visitor);
397  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Text::TextFragmentAbsorber> visitor);
402  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Text::TextAbsorber> visitor);
407  ASPOSE_PDF_SHARED_API void Add(const System::ArrayPtr<System::SharedPtr<Page>>& pages);
413  ASPOSE_PDF_SHARED_API void Insert(int32_t pageNumber, System::SharedPtr<System::Collections::Generic::ICollection<System::SharedPtr<Page>>> pages);
419  ASPOSE_PDF_SHARED_API void Insert(int32_t pageNumber, System::ArrayPtr<System::SharedPtr<Page>> pages);
423  ASPOSE_PDF_SHARED_API void Flatten();
427  ASPOSE_PDF_SHARED_API void FreeMemory() override;
436  ASPOSE_PDF_SHARED_API bool Contains(const System::SharedPtr<Page>& item) const override;
442  ASPOSE_PDF_SHARED_API bool Remove(const System::SharedPtr<Page>& item) override;
443 
444 protected:
445 
447 
453 
454  bool get_AnnotationsAdded() const;
455 
457 
463 
464  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(PageCollection, CODEPORTING_ARGS(System::SharedPtr<Document> document));
465  System::SharedPtr<Page> GetUnrestricted(System::SharedPtr<Engine::CommonData::IPageTreeNode> pageNode, int32_t index);
472  System::SharedPtr<Page> GetUnrestricted(int32_t index);
490  void Dispose();
491  System::SharedPtr<Page> FindByObjectId(int32_t objectID);
493 
494  virtual ASPOSE_PDF_SHARED_API ~PageCollection();
495 
496 private:
497 
498  static const int32_t DefaultIndex;
502  bool _isDisposed;
507  bool _annotationsAdded;
508 
512  void InitCache();
519  System::SharedPtr<Page> Get(int32_t index);
521  void Invalidate(int32_t number);
533  void bindFields(System::SharedPtr<Page> page);
534  System::SharedPtr<Page> CreateNewPage(System::SharedPtr<Engine::CommonData::IPage> newPage, int32_t index, System::SharedPtr<Page> templatePage);
538  bool MergeAcroForm(System::SharedPtr<Document> srcDocument, System::SharedPtr<Copier> copier);
539  void assertObject() const;
545  void Add(const System::SharedPtr<Page>& entity) override;
546 
547 };
548 
549 } // namespace Pdf
550 } // namespace Aspose
551 
552 
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:616
System::SharedPtr< Engine::CommonData::IPages > pages
PageCollection object from Pdf Engine
Definition: PageCollection.h:452
Definition: Artifact.h:67
Class for adding stamps (watermark or background) to PDF files.
Definition: PdfFileStamp.h:56
Represents an absorber object of text fragments. Performs text search and provides access to search r...
Definition: TextFragmentAbsorber.h:81
Definition: signed_info.h:13
bool FreezeNumbersCache
Definition: PageCollection.h:456
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: fwd.h:22
Represents marked-content reference object in logical structure.
Definition: MCRElement.h:63
Interface of enumerator which can be used to iterate through some elements. Objects of this class sho...
Definition: BaseOperatorCollection.h:47
Class representing page of PDF document.
Definition: Page.h:364
Definition: AFRelationship.h:4
Subclass of System::SmartPtr which sets itself to weak mode at construction. Please note that this cl...
Definition: TextFragmentState.h:69
The interface defines ways to cleanup memory in case mass operations.
Definition: ISupportsMemoryCleanup.h:13
System::WeakPtr< Document > _document
Definition: PageCollection.h:448
Interface of collection of elements. Objects of this class should only be allocated using System::Mak...
Definition: Form.h:84
The coordinates are in the page coordinate context.
Implements operations with PDF file: concatenation, splitting, extracting pages, making booklet...
Definition: PdfFileEditor.h:105
Interface of object providing enumerator on contained elements.
Definition: Document.h:584
Collection of PDF document pages.
Definition: PageCollection.h:134
Class represeting stamp.
Definition: Stamp.h:46
Whole PDF file will be submitted.