diff options
author | Jeremias Maerki <jeremias@apache.org> | 2007-06-22 13:34:37 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2007-06-22 13:34:37 +0000 |
commit | 5fabd3e0889ce859dd269ab32b02197a2590b64c (patch) | |
tree | 270fb244887083b0c93df7f627bdd1721b7aa085 /test | |
parent | f0654579fb52b64726b002c582cff879264e188e (diff) | |
download | xmlgraphics-fop-5fabd3e0889ce859dd269ab32b02197a2590b64c.tar.gz xmlgraphics-fop-5fabd3e0889ce859dd269ab32b02197a2590b64c.zip |
Updated PDF/A-1b support according to ISO-19005-1:2005/Cor.1:2007.
Changed test.xconf to match the triplet generated by auto-font-detection (Gladiator is bold) and adjusted PDF/A test files accordingly.
Updated XML Graphics Commons to latest snapshot to include the PDF/A fixes.
Added a unit test for the synchronization of PDF Info and XMP metadata as described in PDF/A-1.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@549816 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
-rw-r--r-- | test/java/org/apache/fop/render/pdf/PDFAMetadataTestCase.java | 112 | ||||
-rw-r--r-- | test/test.xconf | 3 | ||||
-rw-r--r-- | test/xml/pdf-a/minimal-pdf-a.fo | 2 | ||||
-rw-r--r-- | test/xml/pdf-a/with-cmyk-images.fo | 2 |
4 files changed, 117 insertions, 2 deletions
diff --git a/test/java/org/apache/fop/render/pdf/PDFAMetadataTestCase.java b/test/java/org/apache/fop/render/pdf/PDFAMetadataTestCase.java new file mode 100644 index 000000000..2821dcb24 --- /dev/null +++ b/test/java/org/apache/fop/render/pdf/PDFAMetadataTestCase.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* $Id$ */ + +package org.apache.fop.render.pdf; + +import java.util.Calendar; +import java.util.TimeZone; + +import org.apache.fop.pdf.PDFDocument; +import org.apache.fop.pdf.PDFInfo; +import org.apache.fop.pdf.PDFMetadata; +import org.apache.xmlgraphics.xmp.Metadata; +import org.apache.xmlgraphics.xmp.schemas.DublinCoreAdapter; +import org.apache.xmlgraphics.xmp.schemas.DublinCoreSchema; +import org.apache.xmlgraphics.xmp.schemas.XMPBasicAdapter; +import org.apache.xmlgraphics.xmp.schemas.XMPBasicSchema; +import org.apache.xmlgraphics.xmp.schemas.pdf.AdobePDFAdapter; +import org.apache.xmlgraphics.xmp.schemas.pdf.AdobePDFSchema; + +import junit.framework.TestCase; + +/** + * Test case for PDF/A metadata handling. + */ +public class PDFAMetadataTestCase extends TestCase { + + public void testInfoUpdate() throws Exception { + Metadata meta = new Metadata(); + DublinCoreAdapter dc = DublinCoreSchema.getAdapter(meta); + dc.setTitle("MyTitle"); + dc.setDescription(null, "MySubject"); + dc.addCreator("That's me"); + + AdobePDFAdapter pdf = AdobePDFSchema.getAdapter(meta); + pdf.setKeywords("XSL-FO XML"); + pdf.setProducer("SuperFOP"); + + XMPBasicAdapter xmp = XMPBasicSchema.getAdapter(meta); + xmp.setCreatorTool("WonderFOP"); + Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("Europe/Zurich")); + cal1.set(2007, Calendar.JUNE, 5, 21, 49, 13); + cal1.set(Calendar.MILLISECOND, 0); + xmp.setCreateDate(cal1.getTime()); + Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("Europe/Zurich")); + cal2.set(2007, Calendar.JUNE, 6, 8, 15, 59); + cal2.set(Calendar.MILLISECOND, 0); + xmp.setModifyDate(cal2.getTime()); + + PDFInfo info = new PDFInfo(); + assertNull(info.getTitle()); + PDFMetadata.updateInfoFromMetadata(meta, info); + + assertEquals("MyTitle", info.getTitle()); + assertEquals("MySubject", info.getSubject()); + assertEquals("That's me", info.getAuthor()); + assertEquals("XSL-FO XML", info.getKeywords()); + assertEquals("SuperFOP", info.getProducer()); + assertEquals("WonderFOP", info.getCreator()); + assertEquals(cal1.getTime(), info.getCreationDate()); + assertEquals(cal2.getTime(), info.getModDate()); + } + + public void testXMPUpdate() throws Exception { + PDFDocument doc = new PDFDocument("SuperFOP"); + PDFInfo info = doc.getInfo(); + info.setTitle("MyTitle"); + info.setSubject("MySubject"); + info.setAuthor("That's me"); + info.setKeywords("XSL-FO XML"); + //info.setProducer("SuperFOP"); + info.setCreator("WonderFOP"); + Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("Europe/Zurich")); + cal1.set(2007, Calendar.JUNE, 5, 21, 49, 13); + cal1.set(Calendar.MILLISECOND, 0); + info.setCreationDate(cal1.getTime()); + Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("Europe/Zurich")); + cal2.set(2007, Calendar.JUNE, 6, 8, 15, 59); + cal2.set(Calendar.MILLISECOND, 0); + info.setModDate(cal2.getTime()); + + Metadata meta = PDFMetadata.createXMPFromUserAgent(doc); + + DublinCoreAdapter dc = DublinCoreSchema.getAdapter(meta); + assertEquals("MyTitle", dc.getTitle()); + assertEquals("MySubject", dc.getDescription()); + assertEquals(1, dc.getCreators().length); + assertEquals("That's me", dc.getCreators()[0]); + AdobePDFAdapter pdf = AdobePDFSchema.getAdapter(meta); + assertEquals("XSL-FO XML", pdf.getKeywords()); + assertEquals("SuperFOP", pdf.getProducer()); + XMPBasicAdapter xmp = XMPBasicSchema.getAdapter(meta); + assertEquals("WonderFOP", xmp.getCreatorTool()); + assertEquals(cal1.getTime(), xmp.getCreateDate()); + assertEquals(cal2.getTime(), xmp.getModifyDate()); + } +} diff --git a/test/test.xconf b/test/test.xconf index 56fdd8bd8..1f022f9fd 100644 --- a/test/test.xconf +++ b/test/test.xconf @@ -9,12 +9,15 @@ <fonts> <font metrics-url="test/resources/fonts/glb12.ttf.xml" embed-url="test/resources/fonts/glb12.ttf"> <font-triplet name="Gladiator" style="normal" weight="normal"/> + <font-triplet name="Gladiator" style="normal" weight="bold"/> </font> <font metrics-url="test/resources/fonts/glb12.ttf.ansi.xml" embed-url="test/resources/fonts/glb12.ttf"> <font-triplet name="Gladiator-Ansi" style="normal" weight="normal"/> + <font-triplet name="Gladiator-Ansi" style="normal" weight="bold"/> </font> <font metrics-url="test/resources/fonts/glb12.ttf.ansi.xml"> <font-triplet name="Gladiator-Non-Embedded" style="normal" weight="normal"/> + <font-triplet name="Gladiator-Non-Embedded" style="normal" weight="bold"/> </font> </fonts> </renderer> diff --git a/test/xml/pdf-a/minimal-pdf-a.fo b/test/xml/pdf-a/minimal-pdf-a.fo index 0081be30b..94adf72e2 100644 --- a/test/xml/pdf-a/minimal-pdf-a.fo +++ b/test/xml/pdf-a/minimal-pdf-a.fo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Gladiator"> +<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Gladiator" font-weight="bold"> <fo:layout-master-set> <fo:simple-page-master master-name="A4" page-height="29.7cm" page-width="21cm" margin="2cm"> <fo:region-body/> diff --git a/test/xml/pdf-a/with-cmyk-images.fo b/test/xml/pdf-a/with-cmyk-images.fo index f3429d304..109829046 100644 --- a/test/xml/pdf-a/with-cmyk-images.fo +++ b/test/xml/pdf-a/with-cmyk-images.fo @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Gladiator"> +<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Gladiator" font-weight="bold"> <fo:layout-master-set> <fo:simple-page-master master-name="A4" page-height="29.7cm" page-width="21cm" margin="2cm"> <fo:region-body/> |