Jeremias Maerki [Mon, 27 Mar 2006 18:01:20 +0000 (18:01 +0000)]
Fixed addition of ElementMapping instances. Witnessed in the FO tree tests.
The ElementMapping list is not necessary since we now have the ElementMappingRegistry.
Jeremias Maerki [Mon, 27 Mar 2006 09:51:14 +0000 (09:51 +0000)]
Merged Temp_API_Finalization branch back into FOP Trunk:
Finalized API according to the plan in the Wiki: http://wiki.apache.org/xmlgraphics-fop/ApiDesign
In addition to that:
Deprecated the rest of the Fop constructors.
Refactored the FopServlet a bit to make it more versatile and still easy to understand. The FopPrintServlet is now a subclass of FopServlet.
Some further cleanup on the way.
Jeremias Maerki [Sat, 25 Mar 2006 14:36:45 +0000 (14:36 +0000)]
No stacktrace when encountering problems while building a base URL. It's not necessary and draws too much attention. Instead added the URL to the log message that causes the problem.
Don't validate Base URLs anymore in FOUserAgent because that produces errors (because an URL cannot be built) if a symbolic URI is used which is later resolved through a URIResolver.
Improved support for relative URLs for accessing font resources.
ServletContextURIResolver can now use a base URI that starts with "servlet-context:".
Jeremias Maerki [Fri, 24 Mar 2006 08:56:55 +0000 (08:56 +0000)]
Bugfix for ICC color profile parsing in JPEG images.
Ported detection code for CMYK JPEG images generated by Adobe Photoshop from maintenance branch. Adobe inverts CMYK images.
Reenabled ICC color profile embedding for PDF.
Jeremias Maerki [Thu, 23 Mar 2006 09:52:24 +0000 (09:52 +0000)]
The about attribute must have the "rdf" namespace prefix.
Adobe Acrobat uses an outdated namespace URI for the PDF/A identification, so do the same as Adobe Distiller: write the PDF/A identification twice, once with each namespace URI. Reason: Acrobat is probably the best tool to verify PDF/A conformance right now. jHove covers only part of ISO 19005-1.
Jeremias Maerki [Tue, 21 Mar 2006 10:24:45 +0000 (10:24 +0000)]
Made the loading of user-specified hyphenation patterns usable again and plugged it into URI resolution.
Backwards-compatibility should be maintained.
PatternParser now uses JAXP to get the SAX parser.
Moved the hyphenation pattern cache into a separate class so I can easily plug it into FopFactory later instead of having static variables.
Added serialVersionUID to HyphenationTree. Necessary because the class signature changed.
FOURIResolver does not complain about "file not found" on the log anymore since this should be done by the caller. Until now, this resulted in two log messages about the same problem on the log. "File not found" is still reported but only on level "debug" which might be helpful when tracking down a problem, but at least it's not a "WARNING" anymore.
Jeremias Maerki [Tue, 21 Mar 2006 08:17:39 +0000 (08:17 +0000)]
block-container did not tell the breaker if it's in auto-height mode. That causes false alarms for block-containers which are not constrained in b-p-d.
Jeremias Maerki [Mon, 20 Mar 2006 13:49:05 +0000 (13:49 +0000)]
Certain filter combinations in PDF could lead to invalid PDFs. DecodeParams were not properly handled.
Default filter for XMP metadata set to NullFilter as XMP metadata should always be embedded as clear-text so non-PDF-aware XMP processors can extract the metadata.
Default filter for DCT/JPEG- and CCITT/TIFF-encoded images set to NullFilter because these two compression methods already do a good job. An additional flate filter (as was applied before due to the single default) helps a just little but also adds processing time. If anyone wants to squeeze every possible bit out of the PDF you can use the following in the user configuration:
<filterList type="tiff">
<value>flate</value>
</filterList>
<filterList type="jpeg">
<value>flate</value>
</filterList>
Jeremias Maerki [Mon, 20 Mar 2006 07:32:22 +0000 (07:32 +0000)]
Bugzilla #39030:
Output filenames with a space resulted in "%20" in the generated file. Looks like a bug in Xalan-J.
We now open the OutputStream ourselves. The two practically identical write methods pulled up into the abstract base class.
Jeremias Maerki [Sun, 19 Mar 2006 11:12:44 +0000 (11:12 +0000)]
Bugzilla #38731:
More accurate font size selection.
Outer transformation matrix is no longer ignored when painting text.
Improvement for transparent bitmaps (effect can be seen on filters-composite-01-b and render-groups-03-t in SVG 1.1 test suite)
Submitted by: Michal Sevcenko <sevcenko.at.vc.cvut.cz>
Jeremias Maerki [Sat, 18 Mar 2006 20:30:47 +0000 (20:30 +0000)]
Avoid exception when ImageIO is used as image adapter for TIFF images. The stream is already closed and the bitmap loaded when FopPDFImages wants to write the image to the PDF.
Jeremias Maerki [Sat, 18 Mar 2006 20:28:33 +0000 (20:28 +0000)]
Bugfix: CCITT Group 4 encoded TIFF images were not properly embedded in PDF files. FopPDFImage always used the bits/pixel and color space of the original image although our image adapter mostly convert all images to 24bit RGB. One day, we will need to improve the image handling.
Jeremias Maerki [Thu, 16 Mar 2006 13:51:14 +0000 (13:51 +0000)]
Added support for fixed-width spaces and kerning.
Note: letter-spacing is still implemented as before. Fixing this cannot be done without looking at space resolution as a whole on inline level.
The Character area tree object is now deprecated. Normal Text objects should be used to keep renderers simpler.
Introduced FontResolver interface to remove the dependency of FOUserAgent into the font package.
Added kerning information to the base14 fonts, Helvetica and Times. By default it is not used to keep the status-quo. Enable base14 kerning through the FOUserAgent (FopFactory after the API finalization).
Restored the production of EPS images in PDF output as PostScript XObjects.
Restored functionality for a more compact format for the area tree renderer to save space.
LayoutEngineTester slightly changed to allow for configuration values from the XML file. For now, only enabling base14 kerning is supported.
Removed duplicate offset variable in SpaceArea.
Jeremias Maerki [Mon, 6 Mar 2006 07:59:52 +0000 (07:59 +0000)]
Removed duplicate entry in Renderer list.
Register FOEventHandlers using Service discovery, too.
Removed superfluous discovery and registration methods.
Renamed META-INF file to match the pattern established in the sandbox.
Add dynamic lookup of the RendererMakers to RendererFactory (as suggested by Nils Meier; proposed patch slightly altered to make use of org.apache.fop.util.Service instead of sun.misc.Service)
Jeremias Maerki [Thu, 2 Mar 2006 08:19:29 +0000 (08:19 +0000)]
Disabled the resolution setting because it can lead to ugly side-effects. Resolution is poort now (72dpi) but at least the SVG gets rendered correctly.
Jeremias Maerki [Wed, 1 Mar 2006 17:26:21 +0000 (17:26 +0000)]
Bugfix: Fixed a problem with certain TrueType fonts which are missing the "PCLT" table, where a baseline-shift="sub" had no effect due to a missing x-height value.
(Note: This only affects TTFReader, so the font metric file has to be regenerated.)
Activated refinement white-space-handling for fo:title and fo:bookmark-title
(treating fo:title the same as fo:bookmark-title
-- see XSL-FO 1.1 6.11.3 -> Trait derivation)
Jeremias Maerki [Mon, 27 Feb 2006 08:47:52 +0000 (08:47 +0000)]
Ignore attributes from foreign namespaces. This is a temporary fix to get rid of ugly warnings until a proper mechanism for handling foreign attributes is available.
Submitted by: Nils Meier <nmeier.at.users.sourceforge.net>
Jeremias Maerki [Sun, 26 Feb 2006 11:35:52 +0000 (11:35 +0000)]
Added support for page sequence title in AreaTreeParser (IF). Fixes problems in intermediate format test suite.
Introduced a PageSequence area tree object to achieve the proper sequence of Renderer.startPageSequence() calls and Renderer.renderPage() calls. Otherwise, the pageSequence elements are not properly placed in the intermediate format. Doesn't really affect the other renderers because they don't really care.
Jeremias Maerki [Thu, 23 Feb 2006 10:32:58 +0000 (10:32 +0000)]
Changed the way the URL stream is opened. Use URLConnection now.
Added an empty protected method that can be overridden to set parameters like HTTP Basic Authentication on the URLConnection.
Convenience method added for handling HTTP Basic Authentication.
Jeremias Maerki [Wed, 22 Feb 2006 16:35:14 +0000 (16:35 +0000)]
Added a convenience URIResolver that uses the ServletContext in a servlet to access resources packed into a web application.
The URIResolver listens to the "servlet-context:" protocol.
Integrated the new URIResolver into out two servlets at all levels (TransformerFactory, Transformer and FOP).
Jeremias Maerki [Wed, 22 Feb 2006 15:40:44 +0000 (15:40 +0000)]
More work on PDF/A-1:
ID entry is now generated in the trailer.
More conformance checks especially for fonts.
PDF/A Identification Schema for XMP added.
Almost finished. Only color space checking is left to do, I think.
Jeremias Maerki [Sun, 19 Feb 2006 10:22:38 +0000 (10:22 +0000)]
Reduced the use of categories and programming languages as requested on site-dev. This will likely be compensated with an additional extension schema to specify implemented specifications/standards.
Jeremias Maerki [Fri, 17 Feb 2006 16:18:04 +0000 (16:18 +0000)]
XMP metadata generation from the PDFInfo object now conforms to PDF/A-1 (6.7.3 in ISO 19005-1:2005(E)).
On PDFDocument, it is now possible to set the PDF-A mode which triggers conformance checks where necessary.
The first PDF/A-1b conformance checks are now in the code. When conformance problems are detected, the new PDFConformanceException (subclass of RuntimeException since this would be a programmer error) is thrown.
PDF Renderer got a setting (through rendering options and XML configuration) to set the PDF/A-1 mode. Default is "disabled".
Jeremias Maerki [Fri, 17 Feb 2006 13:20:40 +0000 (13:20 +0000)]
DOM2SAX code replaced. Copied and adapted from Xalan-J: http://svn.apache.org/repos/asf/xalan/java/trunk/src/org/apache/xalan/xsltc/trax/DOM2SAX.java
There were issues with well-formedness and namespace prefixes when an XMP fragment was serialized to XML. Now this works fine.
Jeremias Maerki [Fri, 17 Feb 2006 10:57:15 +0000 (10:57 +0000)]
Initial support for XMP metadata (PDF 1.4) under fo:declarations. Both xmpmeta and RDF elements can be used as root elements for XMP metadata.
Extracted DOM2SAX functionality from XMLXMLHandler into utility class since it is now reused elsewhere.
New DOMBuilderContentHandlerFactory is used to create ContentHandlers that build generic DOMs.
New DelegatingContentHandler is a convenience base class modelled after XMLFilterImpl but as passive SAX receiver. It is used by DOMBuilderContentHandlerFactory.
Refactored FOTreeBuilder. FO tree building is now in a special ContentHandler which can be replaced temporarily when handling foreign XML like SVG or XMP. Extension Elements wanting the set their own ContentHandlers (instead of using the standard FO tree building mechanism) return a non-null value in getContentHandlerFactory(). The old mechanism is still supported (MathML, Plan and Barcode4J still use that). However, SVG support is changed to use a ContentHandlerFactory.
Extension elements for xmpmeta and RDF elements making use of the new DOM build-up using ContentHandlerFactory.
XMP metadata is passed to the renderer as ExtensionAttachment to the document. Only PDFRenderer uses the XMP extension attachment at this time.
The PDFRenderer automatically builds XMP metadata based on the basic metadata information in the PDFInfo object if no explicit XMP metadata has been added to the XSL-FO document.
XMP metadata merging is not implemented because this would involve a more sophisticated XMP infrastructure. That also means that XMP metadata is not validated. It's passed into the PDF as is.
The PDF library now provides the PDFMetadata class to embed XMP metadata in PDFs version >=1.4. stream contents use a special filter list which is initially empty, so non-PDF-aware XMP readers can extract (and optionally modify) the XMP metadata.
Trivial update:
Change the wording of a few attributeWarnings -- properties aren't ignored (possible inheritance,
property value function calls...)
see: http://marc.theaimsgroup.com/?l=fop-dev&m=114001378911300&w=2
Added default empty String to the border shorthand. Avoids NPE mentioned in Bugzilla 38648. Still need to add a warning, since property now silently falls back to the default(s).
Jeremias Maerki [Fri, 10 Feb 2006 14:39:34 +0000 (14:39 +0000)]
Creation of Font instances centralized in FontInfo and added a cache for them. This removes duplicate code in a number of places, improves speed a little and saves memory.
Jeremias Maerki [Thu, 9 Feb 2006 13:48:48 +0000 (13:48 +0000)]
Reworked area building in AreaTreeParser to match the scheme that the FOTreeBuilder uses. Cuts away another 10-15% processing time. Too many String.equals() calls and a minor optimization in setTraits().
Jeremias Maerki [Thu, 9 Feb 2006 08:54:06 +0000 (08:54 +0000)]
Bugfix: padding-top and padding-bottom on list-items could lead to wrong page break decisions and thus to overlapping text.
Bugfix: break-before and break-after were ignored on list-items.
Jeremias Maerki [Wed, 8 Feb 2006 15:42:03 +0000 (15:42 +0000)]
Added missing values in area tree XML for PageViewport (simple-page-master-name and blank).
Performance improvement of about 10% for a simple document inside the AreaTreeParser (Hotspot: setTraits())
Changed the way that trait info lookup is done in Trait.java. Should be just a little faster now.
Unused traits disabled.
Commented unused methods.