From: Simon Steiner Date: Wed, 29 Jan 2020 10:15:14 +0000 (+0000) Subject: FOP-2908: Repeated image in header not shown in structure tree X-Git-Tag: fop-2_5~23 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ed7ad907820b7221402d14bcea49646f6fa62384;p=xmlgraphics-fop.git FOP-2908: Repeated image in header not shown in structure tree git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1873293 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java index abaffad60..318892ba3 100644 --- a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java +++ b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFLogicalStructureHandler.java @@ -183,8 +183,11 @@ public class PDFLogicalStructureHandler { return ARTIFACT; } else { MarkedContentInfo mci = addToParentTree(structElem); - mci.parent.setMCIDKid(mci.mcid); - mci.parent.setPage(this.currentPage); + PDFDictionary contentItem = new PDFDictionary(); + contentItem.put("Type", MCR); + contentItem.put("Pg", this.currentPage); + contentItem.put("MCID", mci.mcid); + mci.parent.addKid(contentItem); return mci; } } diff --git a/fop-core/src/test/java/org/apache/fop/render/pdf/PDFStructureTreeBuilderTestCase.java b/fop-core/src/test/java/org/apache/fop/render/pdf/PDFStructureTreeBuilderTestCase.java new file mode 100644 index 000000000..305f6c62a --- /dev/null +++ b/fop-core/src/test/java/org/apache/fop/render/pdf/PDFStructureTreeBuilderTestCase.java @@ -0,0 +1,60 @@ +/* + * 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.io.ByteArrayOutputStream; +import java.io.IOException; + +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +import org.apache.fop.pdf.PDFDocument; +import org.apache.fop.pdf.PDFFactory; +import org.apache.fop.pdf.PDFResources; +import org.apache.fop.pdf.PDFStructElem; +import org.apache.fop.pdf.StandardStructureTypes; + +public class PDFStructureTreeBuilderTestCase { + private PDFFactory pdfFactory; + + @Test + public void testAddImageContentItem() throws IOException { + PDFStructElem structElem = new PDFStructElem(null, StandardStructureTypes.Illustration.FIGURE); + structElem.setDocument(pdfFactory.getDocument()); + PDFLogicalStructureHandler logicalStructureHandler = new PDFLogicalStructureHandler(null); + logicalStructureHandler.startPage(pdfFactory.makePage(new PDFResources(pdfFactory.getDocument()), 0, 0)); + logicalStructureHandler.addImageContentItem(structElem); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + structElem.output(bos); + assertEquals(bos.toString(), "<< /S /Figure /K [<<\n" + + " /Type /MCR\n" + + " /Pg 1 0 R\n" + + " /MCID 0\n" + + ">>] >>"); + } + + @Before + public void setUp() { + PDFDocument doc = new PDFDocument(""); + pdfFactory = new PDFFactory(doc); + } +}