From a3cb3130c00c695ff4bff3153080dafebe2907a1 Mon Sep 17 00:00:00 2001 From: Kakhnovich Raman Date: Fri, 24 Apr 2026 14:32:03 +0300 Subject: [PATCH 1/3] Add addDeclarations method --- .../org/verapdf/xmp/impl/VeraPDFMeta.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java index e266c20fa..c8233c90e 100644 --- a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java +++ b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java @@ -19,6 +19,8 @@ public class VeraPDFMeta { public static final String PDFAID_PREFIX = "pdfaid"; public static final String PDFUAID_PREFIX = "pdfuaid"; public static final String PDFA_EXTENSION_PREFIX = "pdfaExtension"; + public static final String DC_PREFIX = "dc"; + public static final String PDFD_Prefix = "pdfd"; public static final String SCHEMAS = "schemas"; public static final String CONFORMANCE = "conformance"; public static final String PART = "part"; @@ -365,6 +367,38 @@ public boolean containsDeclaration(String conformsTo) { return false; } + public VeraPDFMeta addDeclarations(Set conformsToURIs) throws XMPException { + if (conformsToURIs == null || conformsToURIs.isEmpty()) { + throw new IllegalArgumentException("Argument conformsToURIs can not be null or empty"); + } + if (getProperty(PDFA_DECLARATIONS, DECLARATIONS) == null) { + new PropertyOptions().setArray(true)); + } + + for (String uri : conformsToURIs) { + this.meta.appendArrayItem( + PDFA_DECLARATIONS, + DECLARATIONS, + null, + null, + new PropertyOptions().setStruct(true) + ); + int idx = this.meta.countArrayItems(PDFA_DECLARATIONS, DECLARATIONS); + String itemPath = XMPPathFactory.composeArrayItemPath(DECLARATIONS, idx); + this.meta.setStructField( + PDFA_DECLARATIONS, + itemPath, + PDFA_DECLARATIONS, + CONFORMS_TO, + uri, + null + ); + } + + update(); + return this; + } + public VeraPDFMeta setPDFAIdentificationPart(Integer identificationPart) throws XMPException { String value = identificationPart == null ? null : identificationPart.toString(); return setSimpleTextProperty(XMPSchemaRegistryImpl.NS_PDFA_ID, PART, value); From 5774cae86524de9d64eddf528804a7895045ec6f Mon Sep 17 00:00:00 2001 From: Kakhnovich Raman Date: Fri, 24 Apr 2026 14:32:47 +0300 Subject: [PATCH 2/3] Update VeraPDFMeta.java --- xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java | 1 + 1 file changed, 1 insertion(+) diff --git a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java index c8233c90e..d2d85f068 100644 --- a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java +++ b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java @@ -372,6 +372,7 @@ public VeraPDFMeta addDeclarations(Set conformsToURIs) throws XMPExcepti throw new IllegalArgumentException("Argument conformsToURIs can not be null or empty"); } if (getProperty(PDFA_DECLARATIONS, DECLARATIONS) == null) { + meta.setProperty(PDFA_DECLARATIONS, DECLARATIONS, null, new PropertyOptions().setArray(true)); } From 24032d7c455a4f9515fa41d20cdac69a3c831b31 Mon Sep 17 00:00:00 2001 From: Kakhnovich Raman Date: Fri, 24 Apr 2026 15:23:14 +0300 Subject: [PATCH 3/3] Update VeraPDFMeta.java --- xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java index d2d85f068..d579c3392 100644 --- a/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java +++ b/xmp-core/src/main/java/org/verapdf/xmp/impl/VeraPDFMeta.java @@ -20,7 +20,7 @@ public class VeraPDFMeta { public static final String PDFUAID_PREFIX = "pdfuaid"; public static final String PDFA_EXTENSION_PREFIX = "pdfaExtension"; public static final String DC_PREFIX = "dc"; - public static final String PDFD_Prefix = "pdfd"; + public static final String PDFD_PREFIX = "pdfd"; public static final String SCHEMAS = "schemas"; public static final String CONFORMANCE = "conformance"; public static final String PART = "part";