Prism Delivery: What is the difference between Prism FOP & Apache FOP?

Prism Delivery seems to support different delivery formats based on the FO processor. For instance, the following two formats are available from Prism for PDF deliveries: *[FORMAT_APACHE_PDF][1]

"Generates PDF document using Apache FOP"* *[FORMAT_PDF][2]

"Generates an Adobe PDF document using Prism FOP"* What is the different between Prism FOP & Apache FOP? Doesn't Prism Delivery use Apache FOP under the cover? [1]:
http://pineland.int.westgroup.com/PrismINFJavadocReleases/2014/14.4/Prism/com/tlrg/prism/delivery2/destination/DeliveryDestination.html#FORMAT_APACHE_PDF [2]:
http://pineland.int.westgroup.com/PrismINFJavadocReleases/2014/14.4/Prism/com/tlrg/prism/delivery2/destination/DeliveryDestination.html#FORMAT_PDF

Best Answer

  • Prism FOP is a modified Apache FOP. The first generation uses Apache FOP 0.20.5 to convert FO to intermediate format called AreaTree, which is basically an XML that has layout information of the document. Prism FOP then takes that AreaTree and generates WordPerfect, RTF, HTMLE, HTML, DOCX, XLSX and XLS. Those are formats that were not supported by Apache FOP at that time. Prism FOP 2 is the next generation of Prism FOP where it does not use AreaTree anymore. This version of Prism FOP implements a SAX Handler that parses the FO and writes to the requested output format. It still uses Apache FOP code to handle various FO attributes. The difference between FORMAT_PDF and FORMAT_APACHE_PDF is that FORMAT_PDF uses PDF Conversion from 0.20.5 and APACHE_PDF uses Apache FOP 1.0.

Answers

  • I never got a straight answer from PRISM, but if I had to guess they both use APACHE but FORMAT_PDF is heavily modified, and the FORMAT_APACHE_PDF is somewhat modified.
  • I believe [Apache FOP][1] is the pure FOP engine and that [PRISM FOP][2] is an extension of Apache FOP. Prism FOP V1 relied heavily on Apache FOP. However v2 did not as described in the wiki page: "Prism FOP2 decouples itself from Apache FOP. It does not use AreaTree anymore. However, it still uses a small portion of Apache FOP, particularly the code to parse the FO attributes and unit conversion, for example converting centimeter to millipoints." Though I can't speak with surety (I work in Cobalt Document), I believe that the Apache FOP option would allow you to print on the original FOP processor. The Prism FOP would let you use the additional options and features that have been added into Prism FOP, for example: - RTF lists - HTML lists - CSV - Border support in xslfo - Nested Tables in RTF - Enhanced Line Height support - etc I have however found that for most purposes in development that utilizing the [Apache FOP standalone][3] to quickly analyze issues in my xslfo is extremely useful. I'd highly recommend downloading the .exe and trying out a few of the demo xslfo to pdf conversions. It is possible that the option for Apache FOP uses the Prism engine V1. I don't think it is that likely though I could be wrong. [1]:
    http://xmlgraphics.apache.org/fop/0.95/hyphenation.html [2]:
    http://nsawiki.int.westgroup.com/wiki/index.php5/Prism_FOP2 [3]:
    http://xmlgraphics.apache.org/fop/download.html
  • +1. Ervan, Thanks for the answer. Great info!