diff options
-rw-r--r-- | src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java | 8 | ||||
-rw-r--r-- | test/layoutengine/standard-testcases/footnote-create_new_page.xml | 69 |
2 files changed, 76 insertions, 1 deletions
diff --git a/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java b/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java index 3d45812d8..47195f90f 100644 --- a/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java +++ b/src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java @@ -886,8 +886,14 @@ class PageBreakingAlgorithm extends BreakingAlgorithm { // create pages containing the remaining footnote bodies while (insertedFootnotesLength < totalFootnotesLength) { final int tmpLength = lengthList.get(footnoteListIndex); + // check if last footnote has already been added completely + if (insertedFootnotesLength == tmpLength) { + footnoteListIndex++; + footnoteElementIndex + = getFootnoteList(footnoteListIndex).size() - 1; + } // try adding some more content - if ((tmpLength - insertedFootnotesLength) <= availableBPD) { + else if ((tmpLength - insertedFootnotesLength) <= availableBPD) { // add a whole footnote availableBPD -= tmpLength - insertedFootnotesLength; insertedFootnotesLength = tmpLength; diff --git a/test/layoutengine/standard-testcases/footnote-create_new_page.xml b/test/layoutengine/standard-testcases/footnote-create_new_page.xml new file mode 100644 index 000000000..9092f0d74 --- /dev/null +++ b/test/layoutengine/standard-testcases/footnote-create_new_page.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- 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$ --> +<testcase> + <info> + <p>This test checks a footnote that requires a new page.</p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" + font-family="serif" font-size="11pt"> + <fo:layout-master-set> + <fo:simple-page-master page-height="10cm" + page-width="10cm" master-name="simplepage"> + <fo:region-body region-name="body" /> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="simplepage"> + <fo:flow flow-name="body"> + <fo:block margin-top="8.0cm"> + .... cities + <fo:footnote> + <fo:inline>(1)</fo:inline> + <fo:footnote-body> + <fo:block>1. Lisbon, Chicago, London</fo:block> + </fo:footnote-body> + </fo:footnote> + , veggies + <fo:footnote> + <fo:inline>(2)</fo:inline> + <fo:footnote-body> + <fo:block>2. Lettuce.</fo:block> + <fo:block>2. Garlic.</fo:block> + <fo:block>2. Potato.</fo:block> + </fo:footnote-body> + </fo:footnote> + , and fruits + <fo:footnote> + <fo:inline>(3)</fo:inline> + <fo:footnote-body> + <fo:block>3. Apple, Coconut, Plum, Kiwi, Canteloupe, Tomato, + Clementine, Grapefruit, Guava, Quincy, Lemon, Blueberry, + Raspberry, Pomegranate, Watermelon, Orange, Cherry, Peach, + Banana, Mango, Pear, Melon, Apricot, Pineapple, Strawberry, + Persimon, Medlar. + </fo:block> + </fo:footnote-body> + </fo:footnote> + . + </fo:block> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <eval expected="1" + xpath="//lineArea[starts-with(., '.... cities')]/ancestor::pageViewport/@nr" /> + <eval expected="2" + xpath="//lineArea[starts-with(., '2. Potato.')]/ancestor::pageViewport/@nr" /> + </checks> +</testcase>
\ No newline at end of file |