aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java3
-rw-r--r--fop-core/src/main/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java4
-rw-r--r--fop-core/src/test/java/org/apache/fop/pdf/PDFStructureTreeTestCase.java27
3 files changed, 32 insertions, 2 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java b/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java
index cc299fa1d..838703a77 100644
--- a/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java
+++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java
@@ -267,6 +267,9 @@ public class PDFStructElem extends StructureHierarchyMember implements Structure
}
public int output(OutputStream stream) throws IOException {
+ if (structureType == StandardStructureTypes.InlineLevelStructure.NOTE) {
+ put("ID", "Note ID " + getObjectNumber().getNumber());
+ }
if (getDocument() != null && getDocument().getProfile().getPDFUAMode().isEnabled()) {
if (entries.containsKey("Alt") && "".equals(get("Alt"))) {
put("Alt", "No alternate text specified");
diff --git a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java
index 949fdb22d..4080b5bb1 100644
--- a/fop-core/src/main/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java
+++ b/fop-core/src/main/java/org/apache/fop/render/pdf/PDFStructureTreeBuilder.java
@@ -94,8 +94,8 @@ public class PDFStructureTreeBuilder implements StructureTreeEventHandler {
addBuilder("basic-link", new LinkBuilder());
// Out-of-Line Formatting Objects
addBuilder("float", StandardStructureTypes.Grouping.DIV);
- addBuilder("footnote", StandardStructureTypes.InlineLevelStructure.NOTE);
- addBuilder("footnote-body", StandardStructureTypes.Grouping.SECT);
+ addBuilder("footnote", StandardStructureTypes.InlineLevelStructure.REFERENCE);
+ addBuilder("footnote-body", StandardStructureTypes.InlineLevelStructure.NOTE);
// Other Formatting Objects
addBuilder("wrapper", StandardStructureTypes.InlineLevelStructure.SPAN);
addBuilder("marker", StandardStructureTypes.Grouping.PRIVATE);
diff --git a/fop-core/src/test/java/org/apache/fop/pdf/PDFStructureTreeTestCase.java b/fop-core/src/test/java/org/apache/fop/pdf/PDFStructureTreeTestCase.java
index 27b0bea12..eb36357cf 100644
--- a/fop-core/src/test/java/org/apache/fop/pdf/PDFStructureTreeTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/pdf/PDFStructureTreeTestCase.java
@@ -91,4 +91,31 @@ public class PDFStructureTreeTestCase {
transformer.transform(src, res);
return bos;
}
+
+ @Test
+ public void testFootnote() throws Exception {
+ String fo = "<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">\n"
+ + " <fo:layout-master-set>\n"
+ + " <fo:simple-page-master master-name=\"simple\" page-height=\"27.9cm\" page-width=\"21.6cm\">\n"
+ + " <fo:region-body />\n"
+ + " </fo:simple-page-master>\n"
+ + " </fo:layout-master-set>\n"
+ + " <fo:page-sequence master-reference=\"simple\">\n"
+ + " <fo:flow flow-name=\"xsl-region-body\">\n"
+ + " <fo:block>Text<fo:footnote>\n"
+ + " <fo:inline>1</fo:inline>\n"
+ + " <fo:footnote-body>\n"
+ + " <fo:block>footnote</fo:block>\n"
+ + " </fo:footnote-body>\n"
+ + " </fo:footnote>\n"
+ + " </fo:block>\n"
+ + " </fo:flow>\n"
+ + " </fo:page-sequence>\n"
+ + "</fo:root>\n";
+ ByteArrayOutputStream bos = foToOutput(fo);
+ String pdf = bos.toString();
+ Assert.assertTrue(pdf.contains("/ID (Note ID "));
+ Assert.assertTrue(pdf.contains("/S /Note"));
+ Assert.assertTrue(pdf.contains("/S /Reference"));
+ }
}