http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2491 *** shadow/2491 Fri Jul 6 17:28:08 2001 --- shadow/2491.tmp.22037 Fri Jul 6 17:28:08 2001 *************** *** 0 **** --- 1,74 ---- + +============================================================================+ + | footnote can't fit remaining space and crash | + +----------------------------------------------------------------------------+ + | Bug #: 2491 Product: Fop | + | Status: NEW Version: all | + | Resolution: Platform: All | + | Severity: Critical OS/Version: Other | + | Priority: Other Component: pdf renderer | + +----------------------------------------------------------------------------+ + | Assigned To: [EMAIL PROTECTED] | + | Reported By: [EMAIL PROTECTED] | + | CC list: Cc: | + +----------------------------------------------------------------------------+ + | URL: | + +============================================================================+ + | DESCRIPTION | + If a paragraph has a few foot notes towards the bottom of the page, and the + footnote body cannot fit into the remaining page, FOP would crash. This patch + doesn't solve the problem, but it simply trap the error and skip the footnote + body and output a message after the page number so that the user still get a + pdf file to visually examine where the missing footnote might be and maybe + rearrange his text to fit. I think this is better than FOP just dying without + generating a pdf file. + + Some better solution may be: + (1) properly move the footnote to next page (i.e. say, last line of + page 1 has a footnote refering to footnote 1, but the footnote body itself + only appears in bottom of page 2). + (2) temperarily lengthen the page content size, get the footnote overhanging + below the nominal bottom of page and output a message to tell user to rearrange + his text. + + I had a look around Footnote.java and FootnoteBody.java for a few hours but + neither look too easy, so I gave up. I think ideally the behaviour should + be similar to latex i.e. fit as much of footnote 1 into bottom of page 1, + and output the rest to bottom of page two, but since FOP doesn'timplement + xsl-footnote-separator yet, this may be a bit confusing visually. + + -------------------------------------------- + *** /home/LEUNGH2/xml-fop/src/org/apache/fop/fo/flow/FootnoteBody.java-org + Sun Mar 4 21:34:52 2001 + --- /home/LEUNGH2/xml-fop/src/org/apache/fop/fo/flow/FootnoteBody.java Sat + Jul 7 00:40:46 2001 + *************** + *** 108,114 **** + for ( int i = this.marker; i < numChildren; i++ ) { + FONode fo = (FONode) children.elementAt(i); + Status status; + ! if ( (status = fo.layout(blockArea)).isIncomplete() ) { + this.resetMarker(); + return status; + } + --- 108,125 ---- + for ( int i = this.marker; i < numChildren; i++ ) { + FONode fo = (FONode) children.elementAt(i); + Status status; + ! try { + ! status = fo.layout(blockArea); + ! } catch (NullPointerException e) { + ! System.out.println(""); + ! System.out.println("***A paragraph near the bottom of the page has a + footnote"); + ! System.out.println("***which is too big to fit into the remaining"); + ! System.out.println("***available space. The footnote is being + skipped."); + ! System.out.println("***Please rewrite the paragraph or the footnote + body."); + ! this.resetMarker(); + ! return new Status(Status.OK); + ! }; + ! if ( status.isIncomplete() ) { + this.resetMarker(); + return status; + } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]