aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2025-05-23 13:47:58 +0100
committerSimon Steiner <ssteiner@apache.org>2025-05-23 13:47:58 +0100
commitab76f7336297e5721ab389735c7e84f4d8606743 (patch)
treecddfc4ba8969abb4d0fdd71e663d16ed04b722c0
parentae5289ad7352845ae110cd51cbdb3c9c8c136518 (diff)
downloadxmlgraphics-fop-main.tar.gz
xmlgraphics-fop-main.zip
FOP-3256: Include last page when we cant fit on last pageHEADmain
-rw-r--r--fop-core/src/main/java/org/apache/fop/layoutmgr/PageBreaker.java4
-rw-r--r--fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_7.xml4
-rw-r--r--fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_9.xml3
3 files changed, 9 insertions, 2 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/layoutmgr/PageBreaker.java b/fop-core/src/main/java/org/apache/fop/layoutmgr/PageBreaker.java
index 4152ee996..fc6e05835 100644
--- a/fop-core/src/main/java/org/apache/fop/layoutmgr/PageBreaker.java
+++ b/fop-core/src/main/java/org/apache/fop/layoutmgr/PageBreaker.java
@@ -475,7 +475,9 @@ public class PageBreaker extends AbstractBreaker {
//Replace last page
pslm.setCurrentPage(pageProvider.getPage(false, currentPageNum));
} else {
- if (optimalPageCount <= pslm.getCurrentPV().getBodyRegion().getMainReference().getColumnCount()) {
+ if (optimalPageCount > pslm.getCurrentPV().getBodyRegion().getMainReference().getColumnCount()) {
+ setLastPageIndex(currentPageNum + 2);
+ } else {
setLastPageIndex(currentPageNum + 1);
}
//Last page-master cannot hold the content.
diff --git a/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_7.xml b/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_7.xml
index c3365fd8e..ca07447b9 100644
--- a/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_7.xml
+++ b/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_7.xml
@@ -1457,5 +1457,9 @@
<eval expected="(2)" xpath="//pageViewport[2]//word"/>
<eval expected="(Enter" xpath="//pageViewport[3]//word"/>
<eval expected="Loss" xpath="//pageViewport[4]//word"/>
+ <eval expected="PageFirst" xpath="//pageViewport[1]/@simple-page-master-name"/>
+ <eval expected="PageRestEven" xpath="//pageViewport[2]/@simple-page-master-name"/>
+ <eval expected="PageRestOdd" xpath="//pageViewport[3]/@simple-page-master-name"/>
+ <eval expected="PageLastEven" xpath="//pageViewport[4]/@simple-page-master-name"/>
</checks>
</testcase>
diff --git a/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_9.xml b/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_9.xml
index 9484e4d74..aa4ab9f56 100644
--- a/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_9.xml
+++ b/fop/test/layoutengine/standard-testcases/page-sequence_two-column_last-page_9.xml
@@ -1173,7 +1173,7 @@
</fo:root>
</fo>
<checks>
- <eval expected="4" xpath="count(//pageViewport)"/>
+ <eval expected="5" xpath="count(//pageViewport)"/>
<eval expected="A." xpath="//pageViewport[1]//word"/>
<eval expected="c." xpath="//pageViewport[2]//word"/>
<eval expected="(a)" xpath="//pageViewport[3]//word"/>
@@ -1182,5 +1182,6 @@
<eval expected="PageRestEven" xpath="//pageViewport[2]/@simple-page-master-name"/>
<eval expected="PageRestOdd" xpath="//pageViewport[3]/@simple-page-master-name"/>
<eval expected="PageRestEven" xpath="//pageViewport[4]/@simple-page-master-name"/>
+ <eval expected="PageLastOdd" xpath="//pageViewport[5]/@simple-page-master-name"/>
</checks>
</testcase>