Subject: [xsl] Image overflow in FOP From: Sebastien <kamui.rouch@xxxxxxxxx> Date: Wed, 5 Nov 2008 16:45:57 +0100 |
Hi ! I'm using FOP 0.95 to generate a PDF from an XML document. I'm using XSL-FO to make the transformation and i'm having difficulties with images, especially making them to fit within page or to jump over the next one. All these images are SVG (within instream-foreign-object). The SVG is made of a large JPG background imported with <svg:image> and one or several <svg:path> or other basic shapes. The only constraint i want for the images is to fit the page width, and conserve aspect ratio. That i managed to achieve it. But the problem is that the image overflow the page height whenever there isn't enough room left at the end of the page. Here is a screenshot of what the problem is: http://img444.imageshack.us/my.php?image=imageoverflowbj6.png What i want to do is making FOP to do a page-break when the image can't fit into the page. I tried every combinations of keep constraints with no luck. I even tried to fix (or remove) the width and the height on the instream-foreign-object but FOP still doesn't want to jump to the next page :'( Here are some screenshots of the result: - without width http://img241.imageshack.us/my.php?image=imageoverflowwidthaz5.png - with smaller height (but still big enough to make the image bigger than the space left at the end of page) http://img504.imageshack.us/my.php?image=imageoverflowheightjs7.png We can see that the image is very well scaled up/down but i can't make FOP to break-page :'( Here is the incriminated piece of code (corresponding to the first screenshot) <fo:block> <fo:instream-foreign-object width="100%" content-width="scale-to-fit" content-height="scale-to-fit"> <svg:svg viewBox="519025 -6702573 5363 4051" height="2430px" width="3219px"> <svg:image height="4051" width="5363" y="-6702573" x="519025" xlink:href="file:///C:\bdd\docs\cartes\Scan25_Georef.jpg" /> [some paths, rects and texts] </svg:svg> </fo:instream-foreign-object> </fo:block> It seems like one of the FOP known issue in the LayoutEngine, but i'm not quite sure because i use instream-foreign-object instead of external-graphic: http://xmlgraphics.apache.org/fop/knownissues.html#Layout+Engine (external-graphic don't shrink) My questions are: - is it possible to do what i want (having a page-break whenever it's needed) with instream-foreign-object (and with FOP) ? - in case it's not, how could i calculate the space left at the end of page to decide whether i put a break-before="page" on the corresponding block or not ? I saw some xpath in FOP testcases which tried to access some kind of "internal properties" like viewports etc... and i wondered whether it's possible for me to use these path to retrieve the remaining free space (and for my culture: are these paths part of the standard or specific to FOP ?) Thanks in advance for your help, i'm stuck with this issue for days... Some ressources i found (and tried whenever it applied to my pb, but with no luck): http://www.nabble.com/Image-overflow-td5982795.html http://www.nabble.com/0.94-AND-0.95b-Images-to17627201.html#a17629647 For those who can understand french, here is a more detailed description of my problem: http://forum.hardware.fr/hfr/Programmation/XML-XSL/debordement-image-generer-sujet_118855_1.htm
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] how to do this, Mukul Gandhi | Thread | Re: [xsl] Image overflow in FOP, J.Pietschmann |
RE: [xsl] Efficently transposing to, Michael Kay | Date | Re: [xsl] Efficently transposing to, Michael Ludwig |
Month |