diff --git a/core/src/main/java/org/verapdf/metadata/fixer/utils/parser/XMLProcessedObjectsParser.java b/core/src/main/java/org/verapdf/metadata/fixer/utils/parser/XMLProcessedObjectsParser.java index 3404027d0..235dc138f 100644 --- a/core/src/main/java/org/verapdf/metadata/fixer/utils/parser/XMLProcessedObjectsParser.java +++ b/core/src/main/java/org/verapdf/metadata/fixer/utils/parser/XMLProcessedObjectsParser.java @@ -23,6 +23,7 @@ import org.verapdf.metadata.fixer.utils.model.ProcessedObjects; import org.verapdf.metadata.fixer.utils.model.RuleDescription; import org.verapdf.pdfa.flavours.PDFAFlavour; +import org.verapdf.pdfa.flavours.PDFFlavours; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -109,7 +110,7 @@ public String getProcessedObjectsPathProperty(PDFAFlavour flavour) { if (flavour.getPart() == PDFAFlavour.Specification.ISO_19005_1) { return XML_PROCESSED_OBJECTS_PATH_PROPERTY_PDFA_1; } - if (flavour.getPart() == PDFAFlavour.Specification.ISO_19005_4) { + if (PDFFlavours.isPDFA4RelatedFlavour(flavour)) { return XML_PROCESSED_OBJECTS_PATH_PROPERTY_PDFA_4; } if (flavour.getPart() == PDFAFlavour.Specification.ISO_14289_1) { diff --git a/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavour.java b/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavour.java index 280b1aae2..ec331b328 100644 --- a/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavour.java +++ b/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavour.java @@ -86,6 +86,12 @@ public enum PDFAFlavour { /** 3u PDF Version 3 Level U */ PDFA_3_U(Specification.ISO_19005_3, Level.U), /** 4 PDF Version 4 */ + PDFA_4_2020(Specification.ISO_19005_4_2020, Level.NO_LEVEL), + /** 4 PDF Version 4 Level F */ + PDFA_4_F_2020(Specification.ISO_19005_4_2020, Level.F), + /** 4 PDF Version 4 Level E */ + PDFA_4_E_2020(Specification.ISO_19005_4_2020, Level.E), + /** 4 PDF Version 4 */ PDFA_4(Specification.ISO_19005_4, Level.NO_LEVEL), /** 4 PDF Version 4 Level F */ PDFA_4_F(Specification.ISO_19005_4, Level.F), @@ -208,8 +214,12 @@ public enum Specification { PDFAFlavours.ISO_19005_3_PART, PDFAFlavours.NONE_SUBPART, PDFAFlavours.ISO_19005_3_YEAR, PDFAFlavours.ISO_19005_3_DESCRIPTION), /** PDF/A Version 4 */ + ISO_19005_4_2020(IsoStandardSeries.ISO_19005, PDFSpecification.ISO_32000_2_0, SpecificationFamily.PDF_A, + PDFAFlavours.ISO_19005_4_PART, PDFAFlavours.NONE_SUBPART, PDFAFlavours.ISO_19005_4_2020_YEAR, + PDFAFlavours.ISO_19005_4_DESCRIPTION), + /** PDF/A Version 4 */ ISO_19005_4(IsoStandardSeries.ISO_19005, PDFSpecification.ISO_32000_2_0, SpecificationFamily.PDF_A, - PDFAFlavours.ISO_19005_4_PART, PDFAFlavours.NONE_SUBPART, PDFAFlavours.ISO_19005_4_YEAR, + PDFAFlavours.ISO_19005_4_PART, PDFAFlavours.NONE_SUBPART, PDFAFlavours.ISO_19005_4_2026_YEAR, PDFAFlavours.ISO_19005_4_DESCRIPTION), ISO_32005(IsoStandardSeries.ISO_32005, PDFSpecification.ISO_32000_2_0, SpecificationFamily.TAGGED_PDF, PDFAFlavours.NONE_PART, PDFAFlavours.NONE_SUBPART, PDFAFlavours.ISO_32005_YEAR, diff --git a/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavours.java b/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavours.java index c392921f0..ea1839754 100644 --- a/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavours.java +++ b/core/src/main/java/org/verapdf/pdfa/flavours/PDFAFlavours.java @@ -102,7 +102,8 @@ public final class PDFAFlavours { static final String ISO_19005_1_YEAR = "2005"; //$NON-NLS-1$ static final String ISO_19005_2_YEAR = "2011"; //$NON-NLS-1$ static final String ISO_19005_3_YEAR = "2012"; //$NON-NLS-1$ - static final String ISO_19005_4_YEAR = "2020"; //$NON-NLS-1$ + public static final String ISO_19005_4_2020_YEAR = "2020"; //$NON-NLS-1$ + static final String ISO_19005_4_2026_YEAR = "2026"; //$NON-NLS-1$ static final String ISO_32005_YEAR = "2023"; //$NON-NLS-1$ static final String WCAG_2_1_YEAR = "2018"; //$NON-NLS-1$ static final String WCAG_2_2_YEAR = "2023"; //$NON-NLS-1$ diff --git a/core/src/main/java/org/verapdf/pdfa/flavours/PDFFlavours.java b/core/src/main/java/org/verapdf/pdfa/flavours/PDFFlavours.java index 943643850..60b6d13c1 100644 --- a/core/src/main/java/org/verapdf/pdfa/flavours/PDFFlavours.java +++ b/core/src/main/java/org/verapdf/pdfa/flavours/PDFFlavours.java @@ -93,6 +93,20 @@ public static boolean isWTPDFFlavour(PDFAFlavour flavour) { return isFlavourFamily(flavour, PDFAFlavour.SpecificationFamily.WTPDF); } + public static boolean isPDFA4RelatedFlavour(List flavours) { + for (PDFAFlavour flavour : flavours) { + if (isPDFA4RelatedFlavour(flavour)) { + return true; + } + } + return false; + } + + public static boolean isPDFA4RelatedFlavour(PDFAFlavour flavour) { + return isFlavourPart(flavour, PDFAFlavour.Specification.ISO_19005_4) || + isFlavourPart(flavour, PDFAFlavour.Specification.ISO_19005_4_2020); + } + public static boolean isFlavour(List flavours, PDFAFlavour checkedFlavour) { for (PDFAFlavour flavour : flavours) { if (isFlavour(flavour, checkedFlavour)) { diff --git a/core/src/main/java/org/verapdf/pdfa/validation/profiles/ProfileDirectoryImpl.java b/core/src/main/java/org/verapdf/pdfa/validation/profiles/ProfileDirectoryImpl.java index c50adbff0..bfb06e54d 100644 --- a/core/src/main/java/org/verapdf/pdfa/validation/profiles/ProfileDirectoryImpl.java +++ b/core/src/main/java/org/verapdf/pdfa/validation/profiles/ProfileDirectoryImpl.java @@ -38,6 +38,7 @@ import org.verapdf.core.Directory; import org.verapdf.core.MapBackedDirectory; import org.verapdf.pdfa.flavours.PDFAFlavour; +import org.verapdf.pdfa.flavours.PDFAFlavours; import org.verapdf.pdfa.flavours.PDFFlavours; /** @@ -183,6 +184,9 @@ private static String getProfilePath(PDFAFlavour flavour) { } else { profilePath.append(flavour.getLevel().getCode().toUpperCase()); //$NON-NLS-1$ } + if (PDFFlavours.isFlavourPart(flavour, PDFAFlavour.Specification.ISO_19005_4_2020)) { + profilePath.append("-").append(PDFAFlavours.ISO_19005_4_2020_YEAR); + } if (PDFFlavours.isFlavour(flavour, PDFAFlavour.PDFUA_2)) { profilePath.append("-").append("ISO32005"); }