PoDoFo 1.1.0
Loading...
Searching...
No Matches
PdfXMPPacket.h
1
7#ifndef PDF_XMP_PACKET
8#define PDF_XMP_PACKET
9
10#include "PdfMetadataStore.h"
11
12extern "C"
13{
14 typedef struct _xmlDoc xmlDoc;
15 typedef xmlDoc* xmlDocPtr;
16 typedef struct _xmlNode xmlNode;
17 typedef xmlNode* xmlNodePtr;
18}
19
20namespace PoDoFo
21{
22 class PdfXMPPacket;
23
24 class PODOFO_API PdfXMPProperty final
25 {
26 friend class PdfXMPPacket;
27 private:
28 PdfXMPProperty();
29 public:
30 const std::string& GetName() const { return Name; }
31 const std::string& GetNamespace() const { return Namespace; }
32 const std::string& GetPrefix() const { return Prefix; }
33 std::string GetPrefixedName() const;
34 bool IsValid() const;
35 bool IsDuplicated() const;
36 bool HasInvalidPrefix() const;
37 private:
38 std::string Name;
39 std::string Namespace;
40 std::string Prefix;
41 unsigned Error;
42 };
43
44 class PODOFO_API PdfXMPPacket final
45 {
46 public:
47 PdfXMPPacket();
48 PdfXMPPacket(const PdfXMPPacket&) = delete;
49 ~PdfXMPPacket();
50
51 static std::unique_ptr<PdfXMPPacket> Create(const std::string_view& xmpview);
52
53 public:
54 PdfMetadataStore GetMetadata() const;
55 void GetMetadata(PdfMetadataStore& metadata) const;
56 void SetMetadata(const PdfMetadataStore& metadata);
57 void ToString(std::string& str) const;
58 std::string ToString() const;
61 void PruneAndValidate(PdfALevel level, const std::function<void(const PdfXMPProperty& prop)>& warnings = nullptr);
62#ifdef PODOFO_3RDPARTY_INTEROP_ENABLED
63 void PruneAndValidate(PdfALevel level, const std::function<void(const PdfXMPProperty& prop, xmlNodePtr)>& warnings);
64 xmlDocPtr GetDoc() { return m_Doc; }
65 xmlNodePtr GetOrCreateDescription();
66 xmlNodePtr GetDescription() { return m_Description; }
67#endif // PODOFO_3RDPARTY_INTEROP_ENABLED
68
69 public:
70 PdfXMPPacket& operator=(const PdfXMPPacket&) = delete;
71
72 private:
73 PdfXMPPacket(xmlDocPtr doc, xmlNodePtr xmpmeta);
74
75 private:
76 xmlDocPtr m_Doc;
77 xmlNodePtr m_XMPMeta;
78 xmlNodePtr m_Description;
79 };
80}
81
82#endif // PDF_XMP_PACKET
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
@ Name
Name datatype. Names are used as keys in dictionary to reference values.
@ Create
Create a new file or truncate existing one for writing/reading.