diff --git a/openpdf/src/main/java/com/lowagie/text/pdf/PdfAnnotation.java b/openpdf/src/main/java/com/lowagie/text/pdf/PdfAnnotation.java index be7b16dfc..e409c5476 100644 --- a/openpdf/src/main/java/com/lowagie/text/pdf/PdfAnnotation.java +++ b/openpdf/src/main/java/com/lowagie/text/pdf/PdfAnnotation.java @@ -220,6 +220,7 @@ public PdfAnnotation(PdfWriter writer, Rectangle rect) { if (rect != null) { put(PdfName.RECT, new PdfRectangle(rect)); } + addFKey(); } /** @@ -239,6 +240,7 @@ public PdfAnnotation(PdfWriter writer, float llx, float lly, float urx, float ur put(PdfName.T, title); put(PdfName.RECT, new PdfRectangle(llx, lly, urx, ury)); put(PdfName.CONTENTS, content); + addFKey(); } /** @@ -259,6 +261,7 @@ public PdfAnnotation(PdfWriter writer, float llx, float lly, float urx, float ur put(PdfName.A, action); put(PdfName.BORDER, new PdfBorderArray(0, 0, 0)); put(PdfName.C, new PdfColor(0x00, 0x00, 0xFF)); + addFKey(); } /** @@ -1073,4 +1076,10 @@ public String toString() { return buf.toString(); } } + + private void addFKey() { + if (writer.isPdfA1()) { + put(PdfName.F, new PdfNumber(FLAGS_PRINT)); + } + } } diff --git a/openpdf/src/main/java/com/lowagie/text/pdf/PdfWriter.java b/openpdf/src/main/java/com/lowagie/text/pdf/PdfWriter.java index 790c4e6e6..7940d93dc 100644 --- a/openpdf/src/main/java/com/lowagie/text/pdf/PdfWriter.java +++ b/openpdf/src/main/java/com/lowagie/text/pdf/PdfWriter.java @@ -1769,6 +1769,10 @@ public boolean isPdfX() { return pdfxConformance.isPdfX(); } + public boolean isPdfA1() { + return pdfxConformance.isPdfA1(); + } + // [C11] Output intents /** * Sets the values of the output intent dictionary. Null values are allowed to diff --git a/openpdf/src/test/java/com/lowagie/text/validation/PDFValidationTest.java b/openpdf/src/test/java/com/lowagie/text/validation/PDFValidationTest.java index 383712d6a..046242edc 100644 --- a/openpdf/src/test/java/com/lowagie/text/validation/PDFValidationTest.java +++ b/openpdf/src/test/java/com/lowagie/text/validation/PDFValidationTest.java @@ -5,6 +5,7 @@ import com.lowagie.text.PageSize; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfWriter; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.verapdf.core.ModelParsingException; import org.verapdf.gf.model.GFModelParser; @@ -24,10 +25,12 @@ public class PDFValidationTest { @Test - void validatePDFWithVera() throws Exception { + public void testValidatePDFWithVera() throws Exception { Document document = new Document(PageSize.A4); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - PdfWriter.getInstance(document, byteArrayOutputStream); + PdfWriter pdfWriter = PdfWriter.getInstance(document, byteArrayOutputStream); + pdfWriter.setPDFXConformance(PdfWriter.PDFA1B); + pdfWriter.createXmpMetadata(); try { document.open(); @@ -39,7 +42,7 @@ void validatePDFWithVera() throws Exception { document.close(); // Create a veraPDF validator - PDFAFlavour flavour = PDFAFlavour.PDFA_1_A; + PDFAFlavour flavour = PDFAFlavour.PDFA_1_B; try (InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); GFModelParser parser = GFModelParser.createModelWithFlavour(inputStream, flavour)) { PDFAValidator validator = ValidatorFactory.createValidator(flavour, false, 10); @@ -56,6 +59,7 @@ void validatePDFWithVera() throws Exception { } } + Assertions.assertTrue(result.isCompliant()); } } catch (ModelParsingException e) { e.printStackTrace();