Peter B. West wrote:
> Convergence problems like your page 99 scenario occur in other contexts;
> notably the "last page" problem.  The last page in a sequence is allowed
> a different page-master, but the only way to discover the last page is
> to lay it out.  Oops, last page.  Lay it out again, using the
> last-page-master.  Oops, we now have something left over, so it's not
> the last page any more.  These cases will have to be catalogued as
> discovered, and circuit-breaker heuristics provided for them.

Yes, and the only way around the performance and memory issues this raises
is to write FOP in a way where any forward-reference related handling is
only executed if forward-references really occur.

Then, if someone has large documents and doesn't care about forward references,
the solution is either to:
1. manually remove the forward references in the document
2. remove the forward references using an XSLT stylesheet if the users want
   to toggle between a "fast" and a "slow" version.
3. implement a FOP option that ignores forward references and replaces them
   by a * - or whatever.

Anyhow, in my opinion this is worth doing right. From my experience (which
is from large-volume printing, between 5.000 and 50.000 docs per job),
if someone wants forward references in a doc (even if it's only page x of y
in a contract or invoice) he or she usually really wants it and doesn't care
about performance or memory. If, for example, I am printing an invoice and
absolute need to have page counts (like page 1 of 2) for legal reasons,
then - if this gives me performance problems - I can still try to help the
formatter by introducing fixed page breaks or other things that at least
avoid formatting cycles after the second.

Arnd Beissner
Arnd Bei▀ner IT-Engineering
Bahnhofstr. 3, 71063 Sindelfingen, Germany
Phone: +49-7031-463458
Mobile: +49-173-3016917

Reply via email to