PoDoFo 1.2.0
Loading...
Searching...
No Matches
PdfMetadata.h
1// SPDX-FileCopyrightText: 2021 Francesco Pretto <ceztko@gmail.com>
2// SPDX-License-Identifier: LGPL-2.0-or-later OR MPL-2.0
3
4#ifndef PDF_METADATA
5#define PDF_METADATA
6
7#include "PdfInfo.h"
8#include "PdfXMPPacket.h"
9
10namespace PoDoFo
11{
12 class PdfMetadataStore;
13 class PdfDocument;
14
15 class PODOFO_API PdfMetadata final
16 {
17 friend class PdfDocument;
18 friend class PdfCatalog;
19
20 private:
21 PdfMetadata(PdfDocument& doc);
22 PdfMetadata(PdfMetadata&) = delete;
23
24 public:
25 ~PdfMetadata();
26
29 void SetTitle(nullable<const PdfString&> title);
30
33 nullable<const PdfString&> GetTitle() const;
34
37 void SetAuthor(nullable<const PdfString&> author);
38
41 nullable<const PdfString&> GetAuthor() const;
42
45 void SetSubject(nullable<const PdfString&> subject);
46
49 nullable<const PdfString&> GetSubject() const;
50
53 nullable<const PdfString&> GetKeywordsRaw() const;
54
57 void SetKeywords(std::vector<std::string> keywords);
58
61 std::vector<std::string> GetKeywords() const;
62
66 void SetCreator(nullable<const PdfString&> creator);
67
70 nullable<const PdfString&> GetCreator() const;
71
74 void SetProducer(nullable<const PdfString&> producer);
75
78 nullable<const PdfString&> GetProducer() const;
79
82 void SetCreationDate(nullable<PdfDate> date);
83
86 nullable<const PdfDate&> GetCreationDate() const;
87
90 void SetModifyDate(nullable<PdfDate> date);
91
94 nullable<const PdfDate&> GetModifyDate() const;
95
98 void SetTrapped(nullable<bool> trapped);
99
101 nullable<bool>GetTrapped() const;
102
106 void SetPdfVersion(PdfVersion version);
107
108 PdfVersion GetPdfVersion() const;
109
110 PdfALevel GetPdfALevel() const;
111
114 void SetPdfALevel(PdfALevel level);
115
116 PdfUALevel GetPdfUALevel() const;
117
118 void SetPdfUALevel(PdfUALevel version);
119
120 nullable<const PdfString&> GetProperty(PdfAdditionalMetadata prop) const;
121
122 void SetProperty(PdfAdditionalMetadata prop, nullable<const PdfString&> value);
123
129 void SyncXMPMetadata(bool resetXMPPacket = false);
130
133 bool TrySyncXMPMetadata();
134
136 std::unique_ptr<PdfXMPPacket> TakeXMPPacket();
137
138 private:
139 void Invalidate();
140
141 private:
142 PdfMetadata& operator=(PdfMetadata&) = delete;
143
144 void setKeywords(nullable<const PdfString&> keywords);
145 void ensureInitialized();
146 void syncXMPMetadata(bool resetXMPPacket);
147 void invalidate();
148
149 private:
150 PdfDocument* m_doc;
151 PdfMetadataStore* m_metadata;
152 bool m_xmpSynced;
153 std::unique_ptr<PdfXMPPacket> m_packet;
154 };
155}
156
157#endif // PDF_METADATA
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
PdfVersion
Enum to identify different versions of the PDF file format.
Definition PdfDeclarations.h:61