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 PdfFileSignature;
69 class PdfFileStamp;
70 class Stamp;
71 } // namespace Facades
72 class ImagePlacementAbsorber;
73 namespace LogicalStructure
74 {
75 class MCRElement;
76 class StructureElement;
77 } // namespace LogicalStructure
78 class Page;
79 class PageCollection;
80 class PageInfo;
81 class PageTreeBalancer;
82 class Paragraphs;
83 namespace Tagged
84 {
85 class TaggedContent;
86 class TaggedContext;
87 } // namespace Tagged
88 namespace Tests
89 {
90 namespace Facades
91 {
92 class DocumentTest;
93 } // namespace Facades
94 class RegressionTests_v11_2;
95 class RegressionTests_v12_0;
96 class RegressionTests_v12_1;
97 class RegressionTests_v17_9;
98 class RegressionTests_v20_09;
99 class RegressionTests_v7_0;
100 class RegressionTests_v8_6;
101 class RegressionTests_v8_9;
102 class RegressionTests_v9_0;
103 class RegressionTests_v9_1;
104 class RegressionTests_v9_9;
105 } // namespace Tests
106 namespace Text
107 {
108 class TextAbsorber;
109 class TextFragmentAbsorber;
110 } // namespace Text
111 } // namespace Pdf
112 namespace Utils
113 {
114 class UnrestrictedPageTreeNodeEnumerator;
115 } // namespace Utils
116 } // namespace Aspose
117 namespace System
118 {
119 namespace Collections
120 {
121 namespace Generic
122 {
123 template <typename, typename> class Dictionary;
124 template <typename> class List;
125 } // namespace Generic
126 } // namespace Collections
127 } // namespace System
128 
129 namespace Aspose {
130 
131 namespace Pdf {
132 
136 class ASPOSE_PDF_SHARED_CLASS PageCollection final : public System::Collections::Generic::ICollection<System::SharedPtr<Aspose::Pdf::Page>>, public Aspose::Pdf::ISupportsMemoryCleanup
137 {
138  typedef PageCollection ThisType;
141 
142  typedef ::System::BaseTypesInfo<BaseType, BaseType1> ThisTypeBaseTypesInfo;
143  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
144 
145  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsCollector;
146  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsSubstitutor;
147  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsSubsetter;
148  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsUnembedder;
150  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::ConvertHelpers::LowLevelFontSubstitutor;
151  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentCIDType2FontContentUpdater;
152  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfConvertStrategy;
153  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfXConvertStrategy;
154  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfAConvertStrategy;
157  friend class Aspose::Pdf::Tagged::TaggedContent;
158  friend class Aspose::Pdf::Tagged::TaggedContext;
159  friend class Aspose::Pdf::Document;
163  friend class Aspose::Pdf::Page;
165  friend class Aspose::Pdf::PageTreeBalancer;
166  friend class Aspose::Pdf::Tests::Facades::DocumentTest;
168  friend class Aspose::Pdf::Tests::RegressionTests_v7_0;
169  friend class Aspose::Pdf::Tests::RegressionTests_v8_6;
170  friend class Aspose::Pdf::Tests::RegressionTests_v8_9;
171  friend class Aspose::Pdf::Tests::RegressionTests_v9_0;
172  friend class Aspose::Pdf::Tests::RegressionTests_v9_1;
173  friend class Aspose::Pdf::Tests::RegressionTests_v9_9;
174  friend class Aspose::Pdf::Tests::RegressionTests_v11_2;
175  friend class Aspose::Pdf::Tests::RegressionTests_v12_0;
176  friend class Aspose::Pdf::Tests::RegressionTests_v12_1;
177  friend class Aspose::Pdf::Tests::RegressionTests_v17_9;
178  friend class Aspose::Pdf::Tests::RegressionTests_v20_09;
179 
180 protected:
181 
182  class PagesEnumerableUnrestricted : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Pdf::Page>>
183  {
184  typedef PagesEnumerableUnrestricted ThisType;
186 
187  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
188  RTTI_INFO_DECL();
189 
190  public:
191 
193 
195 
196  protected:
197 
198  virtual ~PagesEnumerableUnrestricted();
199 
200  private:
201 
202  System::WeakPtr<PageCollection> _pageCollection;
203 
204  };
205 
206 
207 private:
208 
209  class PagesEnumerator : public System::Collections::Generic::IEnumerator<System::SharedPtr<Aspose::Pdf::Page>>
210  {
211  typedef PagesEnumerator ThisType;
213 
214  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
215  RTTI_INFO_DECL();
216  CODEPORTING_ENUMERATOR_ITERATOR_METHODS_DECLARATION(CODEPORTING_ARGS(System::SharedPtr<Page>), CODEPORTING_NO_API_KEYWORD);
217 
218  public:
219 
220  const System::SharedPtr<Page>& get_Current() const override;
221 
222  PagesEnumerator(System::SharedPtr<PageCollection> pageCollection);
223 
224  bool MoveNext() override;
225  void Reset() override;
226  void Dispose() override;
227 
228  private:
229 
230  System::SharedPtr<PageCollection> _pageCollection;
231  int32_t cursor;
233 
234  bool MoveNextImplementation();
235  System::SharedPtr<Page>* GetCurrentElementPointer();
236 
237  };
238 
239  class PagesEnumeratorUnrestricted : public System::Collections::Generic::IEnumerator<System::SharedPtr<Aspose::Pdf::Page>>
240  {
241  typedef PagesEnumeratorUnrestricted ThisType;
243 
244  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
245  RTTI_INFO_DECL();
246  CODEPORTING_ENUMERATOR_ITERATOR_METHODS_DECLARATION(CODEPORTING_ARGS(System::SharedPtr<Page>), CODEPORTING_NO_API_KEYWORD);
247 
248  public:
249 
250  const System::SharedPtr<Page>& get_Current() const override;
251 
252  PagesEnumeratorUnrestricted(System::SharedPtr<PageCollection> pageCollection);
253 
254  bool MoveNext() override;
255  void Reset() override;
256  void Dispose() override;
257 
258  private:
259 
260  System::SharedPtr<PageCollection> _pageCollection;
261  int32_t cursor;
263 
264  bool MoveNextImplementation();
265  System::SharedPtr<Page>* GetCurrentElementPointer();
266 
267  };
268 
269  class GeneratorInformation : public System::Object
270  {
271  typedef GeneratorInformation ThisType;
272  typedef System::Object BaseType;
273 
274  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
275  RTTI_INFO_DECL();
276 
277  public:
278 
279  GeneratorInformation(System::SharedPtr<Page> page);
280 
281  void Assign(System::SharedPtr<Page> page);
282 
283  private:
284 
285  System::SharedPtr<Paragraphs> _paragraphs;
286  System::SharedPtr<PageInfo> _pageInfo;
287 
288  };
289 
290 
291 public:
292 
296  ASPOSE_PDF_SHARED_API int32_t get_Count() const override;
300  ASPOSE_PDF_SHARED_API bool get_IsSynchronized();
304  ASPOSE_PDF_SHARED_API System::SharedPtr<System::Object> get_SyncRoot() const;
308  ASPOSE_PDF_SHARED_API bool get_IsReadOnly() const override;
309 
315  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> CopyPage(System::SharedPtr<Page> entity);
319  ASPOSE_PDF_SHARED_API void Clear() override;
324  ASPOSE_PDF_SHARED_API void Delete(int32_t index);
328  ASPOSE_PDF_SHARED_API void Delete();
338  ASPOSE_PDF_SHARED_API int32_t IndexOf(System::SharedPtr<Page> entity) const;
344  //[Obfuscation(Feature = "virtualization", Exclude = false)]
345  ASPOSE_PDF_SHARED_API void CopyTo(System::ArrayPtr<System::SharedPtr<Page>> array, int32_t index) override;
350  ASPOSE_PDF_SHARED_API System::SharedPtr<System::Collections::Generic::IEnumerator<System::SharedPtr<Page>>> GetEnumerator() override;
355  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Annotations::AnnotationSelector> visitor);
360  ASPOSE_PDF_SHARED_API void Delete(System::ArrayPtr<int32_t> pages);
366  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Insert(int32_t pageNumber);
371  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Add();
376  ASPOSE_PDF_SHARED_API void Add(const System::SharedPtr<System::Collections::Generic::ICollection<System::SharedPtr<Page>>>& pages);
383  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> Insert(int32_t pageNumber, System::SharedPtr<Page> entity);
384 
390  ASPOSE_PDF_SHARED_API System::SharedPtr<Page> idx_get(int32_t index);
391 
396  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<ImagePlacementAbsorber> visitor);
401  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Text::TextFragmentAbsorber> visitor);
406  ASPOSE_PDF_SHARED_API void Accept(System::SharedPtr<Text::TextAbsorber> visitor);
411  ASPOSE_PDF_SHARED_API void Add(const System::ArrayPtr<System::SharedPtr<Page>>& pages);
417  ASPOSE_PDF_SHARED_API void Insert(int32_t pageNumber, System::SharedPtr<System::Collections::Generic::ICollection<System::SharedPtr<Page>>> pages);
423  ASPOSE_PDF_SHARED_API void Insert(int32_t pageNumber, System::ArrayPtr<System::SharedPtr<Page>> pages);
427  ASPOSE_PDF_SHARED_API void Flatten();
431  ASPOSE_PDF_SHARED_API void FreeMemory() override;
440  ASPOSE_PDF_SHARED_API bool Contains(const System::SharedPtr<Page>& item) const override;
446  ASPOSE_PDF_SHARED_API bool Remove(const System::SharedPtr<Page>& item) override;
447 
448 protected:
449 
451 
457 
458  bool get_AnnotationsAdded() const;
459 
461 
467 
468  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(PageCollection, CODEPORTING_ARGS(System::SharedPtr<Document> document));
469  System::SharedPtr<Page> GetUnrestricted(System::SharedPtr<Engine::CommonData::IPageTreeNode> pageNode, int32_t index);
476  System::SharedPtr<Page> GetUnrestricted(int32_t index);
494  void Dispose();
495  System::SharedPtr<Page> FindByObjectId(int32_t objectID);
497 
498  virtual ASPOSE_PDF_SHARED_API ~PageCollection();
499 
500 private:
501 
502  static const int32_t DefaultIndex;
506  bool _isDisposed;
511  bool _annotationsAdded;
512 
516  void InitCache();
523  System::SharedPtr<Page> Get(int32_t index);
525  void Invalidate(int32_t number);
537  void bindFields(System::SharedPtr<Page> page);
538  System::SharedPtr<Page> CreateNewPage(System::SharedPtr<Engine::CommonData::IPage> newPage, int32_t index, System::SharedPtr<Page> templatePage);
542  bool MergeAcroForm(System::SharedPtr<Document> srcDocument, System::SharedPtr<Copier> copier);
543  void assertObject() const;
549  void Add(const System::SharedPtr<Page>& entity) override;
550 
551 };
552 
553 } // namespace Pdf
554 } // namespace Aspose
555 
556 
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:621
System::SharedPtr< Engine::CommonData::IPages > pages
PageCollection object from Pdf Engine
Definition: PageCollection.h:456
Definition: Artifact.h:71
Represents a base class for structure elements in logical structure.
Definition: StructureElement.h:85
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:460
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: SideBySidePdfComparer.h:24
Represents marked-content reference object in logical structure.
Definition: MCRElement.h:75
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:384
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:452
Interface of collection of elements. Objects of this class should only be allocated using System::Mak...
Definition: Collection.h:41
The coordinates are in the page coordinate context.
Represents a class to sign a pdf file with a certificate.
Definition: PdfFileSignature.h:64
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:589
Collection of PDF document pages.
Definition: PageCollection.h:136
Class represeting stamp.
Definition: Stamp.h:46
Whole PDF file will be submitted.