$Id: README 1433 2011-07-01 15:12:30Z jeremias $

==============================================================================
  PDF IMAGE SUPPORT FOR APACHE FOP  -  README
==============================================================================

Contents of this file:
 - What's in here?
 - Requirements
 - Legal Information
 - Where to get help?
 - How do I enable PDF image support in FOP?
 - Notes on PDF image support for output formats other than PDF
 - Known Issues
 - Contributors
 - Release Notes

==============================================================================


What's in here?
---------------

This package contains classes which add support using PDF images in
fo:external-graphic elements when you generate PDF files. This means you can
write something like:

<fo:external-graphic src="my-doc.pdf"/>

Implementation notes:

* This package uses the Apache PDFBox PDF library for parsing the PDF
  files as FOP's PDF library is a write-only library.

* PDF image support is done differently for PDF output than for the 
  other output formats. For PDF output, the plug-in tries to transfer 
  the various PDF objects 1:1 to the target PDF. For the other output 
  formats, Apache PDFBox is used to render the PDF to a Graphics2D 
  object (Java2D). PDFBox still has some problems with rendering certain 
  PDFs. 
  Rather, consider helping out in the PDFBox project to improve the 
  code. This plug-in only plays the adapter between FOP and PDFBox. It 
  is not responsible for correct rendering of the PDF.

* Individual pages inside a multi-page PDF can be accessed by using a URI
  fragment in the following form: <uri>#page=<nr>
  Example: http://localhost/mydoc.pdf#page=7
  Note: this only works on URIs, not plain file names in which case you'll
  get an error. Plain file names are illegal in XSL-FO anyway, strictly
  speaking.
  
* If you enable PDF/A or PDF/X functionality, the resulting PDF may not be
  a compliant file since the code isn't sophisticated enough to ensure that
  the rules of PDF/A and PDF/X are respected when the PDF file is embedded.
  So if you enable PDF/A and/or PDF/X, you should refrain from using this
  package.

* If the PDF you want to embed has annotations, be prepared that they may
  not be transferred correctly.

* Apache FOP currently generates PDF 1.4. If you include a PDF with a
  higher PDF version, the results may be unpredictable.

* This package does not work with FOP 0.93, 0.94 or any earlier version.
  You will need a later release or the code from FOP Trunk.

* Some PDF may not be processed correctly with FOP 0.95 due to bugs in
  its PDF library. You may need to upgrade Apache FOP in this case.

* Using PDF files is NOT supported inside SVG, only in XSL-FO.


    
Requirements
----------------

This plug-in has the following requirements:
- Apache PDFBox 2.0 or later
- Apache XML Graphics Commons 2.8 or later (for the image converter)
- Apache XML FOP 2.8 or later (for the FOP functionality)
- Java 1.8 or later

Note: for some problems related to the PDF plug-in, Apache FOP 2.8 or later
is required. A number of bugs had to be fixed in FOP's PDF library.


Legal Information
---------------------

This package is published under the Apache License version 2.0. For the license
text, please see the following files:
- LICENSE
- NOTICE

Legal information on third-party libraries used by this plug-in can be
found in the "lib/README.txt" file.

    
Where to get help?
---------------------    

See: http://xmlgraphics.apache.org/fop/gethelp.html


How do I enable PDF image support in FOP?
-----------------------------------------

Just add the fop-pdf-images.jar and lib/pdfbox-*.jar (including the other
minimal dependencies for PDFBox) to the classpath on the same classpath
level as you put fop.jar.

You can then use URIs referring to PDF files inside fo:external-graphic and
fox:external-document elements.


Notes on PDF image support for output formats other than PDF
------------------------------------------------------------

Please note that this plug-in was written mostly for PDF production. For
other FOP output formats, the PDF is converted to a vector or bitmap image
using Apache PDFBox which is not yet a full-fledged PDF viewer. There may
be limitations concerning the quality. If you run into a problem displaying
PDF for any output format other than PDF, you will need to ask the PDFBox
community for help. Or you can help the Apache PDFBox project to improve
their PDF interpreter.

The Apache PDFBox website: http://pdfbox.apache.org/


Known Issues
---------------

- If Acrobat fails to open the generated PDF, it maybe be due to a bug in FOP
  that was fixed in revision 833375. 

- When importing multiple pages from the same PDF, the same PDF objects from
  the original may be imported anew for each page. There is currently no
  easy way to avoid this.

Contributors
---------------

- Jeremias M�rki (original author)
- Krister Wicksell
- Vincent Hennebert
- Simon Steiner
- Luis Bernardo
- Athanasios-Dimitrios Giannimaras

Versions prior to 2.1 (i.e. prior to the move to the Apache XML Graphics
project) can be downloaded from here:
http://www.jeremias-maerki.ch/development/fop/index.html


==============================================================================
  RELEASE NOTES
==============================================================================

Version 2.8
=========================

Changes:
FOP-3051: Upgrade to Commons IO 2.11
FOP-3073: Preserve bytes when cloning string
FOP-3089: Switch cmap format to support iPhone
FOP-3102: Move composite glyphs to the end

Version 2.7
=========================

Changes:
FOP-3034: Update PDFBox to 2.0.24
FOP-3032: Allow to embed native PDF in AFP
FOP-3020: Add space to standard position for font merge
FOP-3009: Avoid merging fonts with different number of cmap formats
FOP-3001: Deduplicate streams in arrays

Version 2.6
=========================

Changes:
FOP-2951: Add uniquename to xobj form
FOP-2965: Keep streams with DCT compression
FOP-2971: Update unique name inside patterns
FOP-2974: Handle space in COSName
FOP-2979: Update PDFBox to 2.0.19

Version 2.5
=========================

Changes:
FOP-2904: Handle object for boundingbox
FOP-2922: Syntax error after writing content stream
FOP-2933: PDF to PDF checkbox missing

Version 2.4
=========================

Changes:
FOP-2802: Java 10 PDF/SVG to Image box not shown
FOP-2812: Update PDFBox to 2.0.11
FOP-2836: Update PDFBox to 2.0.13
FOP-2840: Image mask in PDF not rendered to PS
FOP-2841: PDF to PDF with merge-fonts checkbox misaligned
FOP-2856: Support compile on Java 12
FOP-2873: Update to PDFBox 2.0.16
FOP-2879: Add caching to avoid parsing content stream
FOP-2882: Allow PDFFormXObject to improve performance

Version 2.3
=========================

Changes:
FOP-2251: PDF to Postscript not showing transparency
FOP-2715: Optimise PDFWriter writing out floats
FOP-2719: PDF to PS NPE when encode param not set
FOP-2720: PDF to PCL exception on clipping
FOP-2723: PDF to PDF deduplicate more types of streams
FOP-2739: Upgrade to PDFBox 2.0.7
FOP-2739: Avoid rastering PDF with Smask to image
FOP-2746: PDF to PDF NPE during structuretree merge
FOP-2750: Use streams for OTF subsetting
FOP-2753: PDF to PS allow fop fonts as fallback
FOP-2754: Error when merging True Type font with CFF PDF font

Version 2.2
=========================

Changes:
- Move to PDFBox 2
- Deduplicate PDF streams
- PDF to PS deduplication of images
- Remove xobj type=form
- Merge fonts (off by default)
- Support PDF shading to PS
- Merging of Tagged (Accessible) PDF
- Bugfix for handling of strings (the check method for US-ASCII had a bug)

Version 2.0 (2010-10-28)
=========================

Changes:
- Moved from PDFBox (org.pdfbox) to Apache PDFBox (org.apache.pdfbox). Note
  that Apache PDFBox is currently in incubation at the ASF. More info at:
  http://incubator.apache.org/pdfbox/
- Added support for "null" objects in PDF.
- Added support for FOP's new intermediate format (and the new output
  implementations).
- Fixed transfer of untouched streams.
- Added an ImageConverter that extends Apache XML Graphics Commons' image
  loader framework with a converter from PDFBox to Java2D. This enables PDF
  display for all of FOP's output formats. See the restrictions mentioned above.
- Fix re-encoding problem for binary strings (for example lookup tables for
  /Indexed color spaces).
- Taken advantage of https://issues.apache.org/jira/browse/PDFBOX-507 to
  avoid warning messages in COSDocument's finalizer method.
- Fixed NullPointerException if a page has no content stream (empty page).
- Added limited support for AcroForms (PDF forms).
- Using CropBox instead of MediaBox, if available, to define the portion of the
  PDF to display.
- Added support for the /Rotation entry in the Page dictionary.
- Handled the case where the Resources dict of a page is missing and therefore
  inherited.
- Fixed a problem with Crop/MediaBox dictionaries not starting at coordinate 0,0.
- Added on-load hook to decrypt a PDF, for example.
- Added support for merging AcroForms (Thanks to Vincent Hennebert)
- Updated Apache PDFBox to version 0.8.0 to 1.3.1. The plug-in now requires at
  least J2SE 1.5!


Version 1.3 (2008-11-28)
=========================

Changes:
- Fixed a NullPointerException when the MediaBox is inherited.
- An invalid page number is now properly handled.


Version 1.2 (2008-04-04)
=========================

Changes:
- Fixed handling of rotated pages (Thanks to Krister Wicksell)
- Fixed "PDFObject already has an object number" error occurring with certain
PDFs.

Version 1.1a (2008-01-22)
=========================

Changes:
- Disabled the in-memory caching of PDF files due to an intermittent bug that
appeared due to reuse of a PDDocument. This needs to be fixed in PDFBox.
- Change in PDFBox: Don't warn about that COSDocument isn't closed. Instead,
the object is closed automatically when it's collected.

Version 1.1 (2008-01-14)
=========================

Changes:
- Adjustments to changes in FOP Trunk after the introduction of a new image
loading package (in Apache XML Graphics Commons).
- Support for addressing every single page in a PDF, not just the first.

Note: This version will only work with FOP Trunk (revision 611768 or later) or
with FOP 0.95 when it is released.

Version 1.0 (2007-08-06)
=========================

This is the initial release. Feedback is welcome as this is very new code.

Note: Version 1.0 contains a modified version of PDFBox! I'll send a patch
with the change to the PDFBox project so hopefully the next version of PDFBox
will not need such a modification.

Note: Version 1.0 contains a development version of Apache FOP from the
following branch:
https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_PDF_in_PDF/
As soon as the code is stabilized this will be merged into the Trunk.

