diff --git a/pom.xml b/pom.xml
index 55f9c7d..6f2bb9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,6 +30,7 @@
preforma-classification
profile-merger
profiles-wiki-generation
+ tagged-pdf-generation
tagged-structure-merger
verapdf-examples
veraPDF-parsers-performance
diff --git a/profile-merger/profile-merger-1.0-SNAPSHOT.jar b/profile-merger/profile-merger-1.0-SNAPSHOT.jar
index 8c6b30d..25f4145 100644
Binary files a/profile-merger/profile-merger-1.0-SNAPSHOT.jar and b/profile-merger/profile-merger-1.0-SNAPSHOT.jar differ
diff --git a/profile-merger/src/main/java/org/verapdf/ProfileMerger.java b/profile-merger/src/main/java/org/verapdf/ProfileMerger.java
index d2500d9..5d48429 100644
--- a/profile-merger/src/main/java/org/verapdf/ProfileMerger.java
+++ b/profile-merger/src/main/java/org/verapdf/ProfileMerger.java
@@ -91,6 +91,27 @@ private static void updatePDFUAProfiles(ZipFile zipSource) {
excludedWCAGRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_1, "7.18.5", 2));
generateProfile(zipSource, "WCAG-2-2-Complete.xml", PDFUA_FOLDER, new String[]{"WCAG/2.2", "WCAG/PDF_UA", "1"}, new String[]{}, excludedWCAGRules);
generateProfile(zipSource, WCAG_MACHINE_PROFILE_NAME, PDFUA_FOLDER, new String[]{"WCAG/2.2", "WCAG/PDF_UA", "1"}, new String[]{}, excludedWCAGRules);
+ List excludedWTPDFRules = new ArrayList<>(18);//not for reuse
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "5", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "5", 2));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "5", 3));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "5", 4));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "5", 5));
+ generateProfile(zipSource, "WTPDF-1-0-Accessibility.xml", PDFUA_FOLDER, new String[]{"2", "WTPDF/1.0/Accessibility"}, new String[]{}, excludedWTPDFRules);
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.2.5.28.2", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.2.5.29", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.4.3", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.4.3", 2));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.4.3", 3));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.7", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.7", 2));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.9.2.3", 2));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.9.2.4.7", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.9.2.4.8", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.9.2.4.19", 1));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.9.2.4.19", 2));
+ excludedWTPDFRules.add(Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_14289_2, "8.11.2", 1));
+ generateProfile(zipSource, "WTPDF-1-0-Reuse.xml", PDFUA_FOLDER, new String[]{"2", "WTPDF/1.0/Reuse"}, new String[]{}, excludedWTPDFRules);
}
private static void generateProfile(ZipFile zipSource, String generalProfileName, String folder, String[] folders,
@@ -153,6 +174,9 @@ private static void addRules(String generalProfileName, ValidationProfile profil
if (generalProfileName.contains("PDFA-3") && rule.getRuleId().getSpecification() == PDFAFlavour.Specification.ISO_19005_2) {
rule = updatePDFA2RuleToPDFA3(rule);
}
+ if (generalProfileName.contains("WTPDF")) {
+ rule = updatePDFUA1RuleToWTPDF(rule);
+ }
if (generalProfileName.contains("PDFUA-1")) {
rule = updatePDFUA1RuleTags(rule);
}
@@ -167,7 +191,25 @@ private static void addRules(String generalProfileName, ValidationProfile profil
variables.addAll(profile.getVariables());
}
}
-
+
+ private static Rule updatePDFUA1RuleToWTPDF(Rule rule) {
+ RuleId ruleId = Profiles.ruleIdFromValues(PDFAFlavour.Specification.WTPDF_1_0, rule.getRuleId().getClause(),
+ rule.getRuleId().getTestNumber());
+ List references = new ArrayList<>(rule.getReferences().size());
+ for (Reference reference : rule.getReferences()) {
+ if (reference.getSpecification().contains("ISO 14289-2:2024")) {
+ reference = Profiles.referenceFromValues(reference.getSpecification().replace("ISO 14289-2:2024",
+ "WTPDF 1.0"), reference.getClause());
+ }
+ references.add(reference);
+ }
+ String description = rule.getDescription().replace("PDF/UA-2", "WTPDF 1.0")
+ .replace("ISO 14289-2", "WTPDF 1.0");
+ return Profiles.ruleFromValues(ruleId, rule.getObject(), rule.getDeferred(), rule.getTags(), description,
+ rule.getTest(), rule.getError(), references);
+
+ }
+
private static Rule updatePDFA2RuleToPDFA3(Rule rule) {
RuleId ruleId = Profiles.ruleIdFromValues(PDFAFlavour.Specification.ISO_19005_3, rule.getRuleId().getClause(),
rule.getRuleId().getTestNumber());