Browse Source

FOP-2353: PDF-A preflight warnings

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1619415 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-2_0
Simon Steiner 9 years ago
parent
commit
967a5b1847

BIN
lib/xmlgraphics-commons-svn-trunk.jar View File


+ 7
- 1
src/java/org/apache/fop/render/pdf/PDFRenderingUtil.java View File

@@ -26,6 +26,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
@@ -36,6 +37,7 @@ import org.apache.commons.logging.LogFactory;

import org.apache.xmlgraphics.java2d.color.profile.ColorProfileUtil;
import org.apache.xmlgraphics.xmp.Metadata;
import org.apache.xmlgraphics.xmp.schemas.DublinCoreSchema;
import org.apache.xmlgraphics.xmp.schemas.XMPBasicAdapter;
import org.apache.xmlgraphics.xmp.schemas.XMPBasicSchema;

@@ -246,7 +248,11 @@ class PDFRenderingUtil {
Metadata docXMP = metadata.getMetadata();
Metadata fopXMP = PDFMetadata.createXMPFromPDFDocument(pdfDoc);
//Merge FOP's own metadata into the one from the XSL-FO document
fopXMP.mergeInto(docXMP);
List<Class> exclude = new ArrayList<Class>();
if (pdfDoc.getProfile().getPDFAMode().isPart1()) {
exclude.add(DublinCoreSchema.class);
}
fopXMP.mergeInto(docXMP, exclude);
XMPBasicAdapter xmpBasic = XMPBasicSchema.getAdapter(docXMP);
//Metadata was changed so update metadata date
xmpBasic.setMetadataDate(new java.util.Date());

+ 14
- 2
src/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java View File

@@ -358,7 +358,10 @@ class PDFStructureTreeBuilder implements StructureTreeEventHandler {
}

public StructureTreeElement startNode(String name, Attributes attributes, StructureTreeElement parent) {
assert parent == null || parent instanceof PDFStructElem;
if (!isPDFA1Safe(name)) {
return null;
}
assert parent == null || parent instanceof PDFStructElem;
PDFStructElem parentElem = parent == null ? ancestors.getFirst() : (PDFStructElem) parent;
PDFStructElem structElem = createStructureElement(name, parentElem, attributes,
pdfFactory, eventBroadcaster);
@@ -367,7 +370,16 @@ class PDFStructureTreeBuilder implements StructureTreeEventHandler {
}

public void endNode(String name) {
ancestors.removeFirst();
if (isPDFA1Safe(name)) {
ancestors.removeFirst();
}
}

private boolean isPDFA1Safe(String name) {
return !(pdfFactory.getDocument().getProfile().getPDFAMode().isPart1()
&& (name.equals("table-body")
|| name.equals("table-header")
|| name.equals("table-footer")));
}

public StructureTreeElement startImageNode(String name, Attributes attributes, StructureTreeElement parent) {

Loading…
Cancel
Save