diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java index 5ddf056ca8..3a65059008 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java @@ -54,7 +54,7 @@ public class PdfAXMPUtil { " \n" + " \n" + " \n" + - " http://www.aiim.org/pdfua/ns/id/\n" + + " \n" + " pdfuaid\n" + " PDF/UA identification schema\n" + " \n" + diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java index 333b1427d0..ec35e1c3aa 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java @@ -42,23 +42,23 @@ This file is part of the iText (R) project. */ package com.itextpdf.pdfa; -import com.itextpdf.kernel.pdf.PdfAConformanceLevel; -import com.itextpdf.kernel.pdf.PdfDocument; -import com.itextpdf.kernel.pdf.PdfOutputIntent; -import com.itextpdf.kernel.pdf.PdfReader; -import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.io.source.ByteArrayOutputStream; +import com.itextpdf.kernel.pdf.*; import com.itextpdf.kernel.utils.CompareTool; import com.itextpdf.kernel.xmp.XMPConst; import com.itextpdf.kernel.xmp.XMPException; import com.itextpdf.kernel.xmp.XMPMeta; import com.itextpdf.kernel.xmp.XMPMetaFactory; +import com.itextpdf.kernel.xmp.options.ParseOptions; import com.itextpdf.kernel.xmp.options.PropertyOptions; import com.itextpdf.kernel.xmp.options.SerializeOptions; +import com.itextpdf.kernel.xmp.properties.XMPProperty; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.annotations.type.IntegrationTest; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; + +import java.io.*; +import java.nio.charset.StandardCharsets; + import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -147,6 +147,57 @@ public void saveAndReadDocumentWithCanonicalXmpMetadata() throws IOException, XM } } + @Test + public void testPdfUAExtensionMetadata() throws IOException { + + String outFile = destinationFolder + "testPdfUAExtensionMetadata.pdf"; + String cmpFile = cmpFolder + "cmp_testPdfUAExtensionMetadata.pdf"; + + try (FileOutputStream fos = new FileOutputStream(outFile)) { + generatePdfAWithUA(fos); + } + + CompareTool ct = new CompareTool(); + Assert.assertNull(ct.compareXmp(outFile, cmpFile, true)); + + } + + @Test + public void testPdfUAIdSchemaNameSpaceUriIsNotText() throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + generatePdfAWithUA(baos); + + // check whether the pdfuaid NS URI was properly encoded as a URI with rdf:resource + PdfDocument readDoc = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray()))); + String xmpString = new String(readDoc.getXmpMetadata(), StandardCharsets.UTF_8); + Assert.assertTrue( + "Did not find expected namespaceURI definition", + xmpString.contains("") + ); + + } + + private void generatePdfAWithUA(OutputStream os) throws IOException { + WriterProperties wp = new WriterProperties().addUAXmpMetadata(); + try (PdfWriter w = new PdfWriter(os, wp)) { + PdfOutputIntent outputIntent; + try (InputStream is = new FileInputStream(sourceFolder + "sRGB Color Space Profile.icm")) { + outputIntent = new PdfOutputIntent( + "Custom", "", + "http://www.color.org", + "sRGB IEC61966-2.1", + is + ); + } + PdfDocument pdfDoc = new PdfADocument(w, PdfAConformanceLevel.PDF_A_2A, outputIntent).setTagged(); + pdfDoc.getDocumentInfo().setTitle("Test document"); + pdfDoc.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true)); + pdfDoc.getCatalog().setLang(new PdfString("en")); + pdfDoc.addNewPage(); + pdfDoc.close(); + } + } + private int count(byte[] array, byte b) { int counter = 0; for (byte each : array) { diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAXmpTest/cmp_testPdfUAExtensionMetadata.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAXmpTest/cmp_testPdfUAExtensionMetadata.pdf new file mode 100644 index 0000000000..16d382cb6e Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAXmpTest/cmp_testPdfUAExtensionMetadata.pdf differ