[
https://issues.apache.org/jira/browse/FOP-2374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17364260#comment-17364260
]
Juan commented on FOP-2374:
---------------------------
Got into the same issue with a <fo:page-number-citation/> element. Upon further
analysis, this happens whenever a block ends with an empty inline element.
Tracked the issue up to XMLWhiteSpaceHandler, see proposed patch
[^FOP-2374_Clear_pendingInlines_when_text_is_found_.patch].
This is partially covered by the already existent test
"inline_white-space-treatment_bugzilla45097.xml" and further tested it using
this input: [^test-input.fo].
Patch explanation:
Case:
* Given: Inline element that ends with space, followed by plain text.
* Processing the Inline element adds a pending inline.
* Processing the text. That left the pending inline unprocessed.
** This should only happen when text is only white space ( nonWhiteSpaceCount
== 0 )
** Otherwise, it should clear all pending inlines because they're not trailing
space anymore.
The problem:
* That unprocessed pending inline becomes a problem **IF** it's procesed
(that's what removes the valid space).
** It is cleared by XMLWhiteSpaceHandler in line 227 ( pendingInlines.clear();
) if it's followed by any inline that has text (not only next one, there can be
many empty inlines and then and inline with text).
** When there's no inline with text, 227 is not executed, and when reaching the
end of the block, it processes all pending inlines in a shortcut path (line
153/155 `if (endOfBlock) { handlePendingInlines(); }`).
> space missing before fo:page-number-citation-last in PDF output
> ---------------------------------------------------------------
>
> Key: FOP-2374
> URL: https://issues.apache.org/jira/browse/FOP-2374
> Project: FOP
> Issue Type: Bug
> Components: renderer/pdf
> Affects Versions: 1.1
> Reporter: Jason Harrop
> Priority: Minor
> Attachments: FOP-2374_Clear_pendingInlines_when_text_is_found_.patch,
> _test.fo, test-input.fo
>
>
> When you generate a PDF from FO such as:
> <fo:block><fo:inline>of </fo:inline><fo:page-number-citation-last
> ref-id="page2"/></fo:block>
> the whitespace between the word "of" and the page-number-citation-last
> element is lost.
> In
> http://apache-fop.1065347.n5.nabble.com/preserving-a-trailing-space-in-inline-td40644.html
> Pascal Sancho
> diagnosed that the issue arises when a fo:page-number-citation-last (PNCL)
> comes after a fo:inline element
> and no content comes after the PNCL.
> He also identified a workaround: "Just add a character AFTER the PNCL element
> other than a regular white space"
> I'm also attaching his test FO file
--
This message was sent by Atlassian Jira
(v8.3.4#803005)