[prev in list] [next in list] [prev in thread] [next in thread]
List: fop-cvs
Subject: [Xmlgraphics-fop Wiki] Update of "ImageSupport" by JeremiasMaerki
From: Apache Wiki <wikidiffs () apache ! org>
Date: 2007-02-17 23:05:30
Message-ID: 20070217230530.9179.31840 () eos ! apache ! osuosl ! org
[Download RAW message or body]
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Xmlgraphics-fop Wiki" for \
change notification.
The following page has been changed by JeremiasMaerki:
http://wiki.apache.org/xmlgraphics-fop/ImageSupport
The comment on the change is:
Some more thoughts
------------------------------------------------------------------------------
||PCL||decoded bitmap||
||AFP||decoded bitmap||
||SVG||referenced or RFC2396 data URL||
- ||RTF||PNG: 1:1 embedding||
+ ||RTF||1:1 embedding||
- === BMP, GIF ===
+ === BMP ===
+
+ ''fo:external-graphic only''
+
+ ||Renderer||required/preferred variant||Comments||
+ ||PDF||decoded bitmap||
+ ||PostScript||decoded bitmap||
+ ||Java2D||decoded bitmap||
+ ||PCL||decoded bitmap||
+ ||AFP||decoded bitmap||
+ ||SVG||referenced or RFC2396 data URL||
+ ||RTF||1:1 embedding||
+
+ === GIF ===
''fo:external-graphic only''
@@ -83, +96 @@
Output formats (like PCL and RTF) for which no native conversion is available we \
need an alternative to provide the SVG as a bitmap image. This is currently \
implemented in AbstractGenericSVGHandler and, for RTF, in SVGConverter.
- For PDF, it would be interesting to have a native picture painted into a Form \
XObject so such an image can be preprocessed and more easily reused. + For PDF, it \
would be interesting to have a native picture painted into a Form XObject so such an \
image can be preprocessed and more easily reused. The difficulty there are features \
like links which would need to be handled separately since they are not part of a \
Form object. +
+ Similary for PostScript, the SVG could be rendered as an EPS file which could be \
reused within the document.
=== EPS ===
@@ -107, +122 @@
MathML is internally converted to SVG in the MathML extension and subsequently \
handled as such. So see the SVG section for details. Same problems, too. The \
alternative is to render MathML directly using Java2D.
+ One small issue here: a math expression usually has a baseline. This baseline \
should be aligned with the FO baseline. +
=== Barcode4J ===
''fo:instream-foreign-object only''
@@ -120, +137 @@
||SVG||internally converted to SVG (NYI)||
||RTF||internally converted to bitmap (NYI)||
- The new FOP extension is in Barcode4J's CVS and functional.
+ The new FOP extension is available since Barcode4J 2.0alpha1.
=== Other foreign XML formats ===
- The easyest way is to convert to SVG internally and let the renderers handle that \
format. Examples for this section: Example plan extension, JCharts support etc. + The \
easiest way is to convert to SVG internally and let the renderers handle that format. \
Examples for this section: Example plan extension, JCharts support etc.
= Requirements for the whole solution =
- * Extensions which support foreign XML formats should be able to convert their \
content at least to SVG. Generating bitmaps is also desirable so output formats like \
RTF can also be supported. + * Extensions which support foreign XML formats should \
be able to convert their content at least to SVG. Generating bitmaps is also \
desirable so output formats like RTF can also be supported. Rendering to Java2D may \
be preferred to SVG as it can reduce some overhead.
- * Renderers need to expose APIs to output directly supported formats other than \
bitmap formats. EPS for PostScript, Graphics2D for at least Java2DRenderer but \
possibly also for PDF and PS. + * Renderers need to expose APIs to output directly \
supported formats other than bitmap formats. EPS for !PostScript, Graphics2D for at \
least Java2DRenderer but possibly also for PDF and PS. See \
Graphics2D!ImagePainter/Graphics2DAdapter as an example for a solution which is \
already implemented for some renderers.
* Different renderers support different source formats/flavors for the images to \
be embedded. The current cache only supports exactly one flavor. If the same image is \
rendered with another renderer this might result in problems. + * The image cache \
should store one entry per URI and flavor. + * Examples of possible flavors are: \
raw/undecoded, !RenderedImage/!BufferedImage, Graphics2D!ImagePainter, EPS, XML (SVG, \
MathML...), RFC2396 URL, etc. + * Renderers would provide a prioritized list of \
supported/preferred flavors. The image package would then do necessary \
decoding/conversions and deliver the best flavor it can deliver in a \
particular case.
- * During layout only the image dimensions need to be determined so the image can \
be properly placed. The actual image data only needs to be available during \
rendering. Ideally, the InputStream to load the dimensions from should be available \
to the component fully loading the image later on to avoid additional round-trips to \
fetch the image. Should additional flavors be needed, the InputStream can probably be \
reopened. + * During layout only the image dimensions need to be determined so the \
image can be properly placed. The actual image data only needs to be available during \
rendering. Ideally, the !InputStream to load the dimensions from should be available \
to the component fully loading the image later on to avoid additional round-trips to \
fetch the image. Should additional flavors be needed, the !InputStream can probably \
be reopened. + * To handle all kinds of formats, we may need a special \
!PushBackInputStream which supports arbitrarily sized buffers to reset a stream to \
position 0. PNG is a case where the resolution information of an image is not \
guaranteed to be within the first 4KB of the file.
- * If we (later on) create a XML-based intermediate format to represent the area \
tree, the layout and the rendering might happen in different VMs, so the actual image \
data might actually never be loaded at all, so the InputStream still needs to be \
closed properly! + * When someone works with the XML-based intermediate format to \
represent the area tree, the layout and the rendering might happen in different VMs, \
so the actual image data might actually never be loaded at all, so the !InputStream \
still needs to be closed properly!
= Random thoughts =
It might be good to separate the image dimension object for the layout process from \
the actual decoded image, thus providing separate caches for both.
- For high-volume PostScript environments (or PPML) it might be worthwhile not to \
fully load images at all but to simply insert resource placeholders (DSC comment \
%%IncludeResource) into the stream. This would speed up the rendering process \
considerably for environments where such an approach is possible. + For high-volume \
!PostScript environments (or PPML) it might be worthwhile not to fully load images at \
all but to simply insert resource placeholders (DSC comment %%!IncludeResource) into \
the stream. This would speed up the rendering process considerably for environments \
where such an approach is possible.
+ If it is known which renderer the document will be rendered to during the layout \
stage, the images could be loaded in a separate thread after the dimensions have been \
determined while the actual layout continues. +
+ We need to get rid of those byte array approach for storing decoded images. This \
should be done entirely using Java2D/AWT means. +
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic