Thanks Georg for the quick response!
I must admit I'm not too familiar with java.xml.* package - just able to
render out a PDF and that's it. So I'm having difficulty following your
example.
Assuming I have a template.xsl file and a data.xml file, I assumed I would
have to simulate/emulate using FOP to transform the data.xml via the
template.xsl into a PDF (or really a tree in memory).
In your example I follow that the xsl is passed in...but I don't see
how/where the data.xml would come into it.
If this is not the right forum, any ideas where/who I should try?
Thanks again!
Georg Datterl wrote:
>
> Hi Bernmeister,
>
> You can do that. Take the block element, where your user can put the text
> in. Give it an ID. Render to the area tree. Use Xpath and the ID to find
> the block. Ask for ist height. Use this height/1000 (+ paddings, spaces,
> ...) to set the extent.
>
> private org.w3c.dom.Document multipass(Page p) {
> StringBuffer sb = new StringBuffer();
> sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
> sb.append(("<fo:root
> xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"" +
> "
> xmlns:fox=\"http://xmlgraphics.apache.org/fop/extensions\" >" +
> "<fo:layout-master-set>"));
> for(PageMaster pm : p.getPageMasters().values()) {
> sb.append(pm);
> }
> sb.append(p.getPageSequence());
> sb.append("</fo:layout-master-set>");
> sb.append(p);
> sb.append("</fo:root>");
> return multipass(sb);
> }
>
> private org.w3c.dom.Document multipass(StringBuffer sb) {
> try{
> return multipass(new StreamSource(new
> ByteArrayInputStream(sb.toString().getBytes("UTF-8"))));
> } catch (IOException e) {
> System.out.println(e.getMessage());
> e.printStackTrace();
> }
> return null;
> }
>
> private org.w3c.dom.Document multipass(StreamSource source) {
> try {
> FOUserAgent foUserAgent = getFopFactory().newFOUserAgent();
> Transformer transformer =
> getMultipassFactory().newTransformer();
> TransformerHandler handler =
> getMultipassFactory().newTransformerHandler();
> DOMResult domResult = new DOMResult();
> handler.setResult(domResult);
>
> org.apache.fop.render.Renderer targetRenderer =
> foUserAgent.getRendererFactory().createRenderer(
> foUserAgent, MimeConstants.MIME_PDF);
>
> XMLRenderer renderer = new XMLRenderer();
> renderer.mimicRenderer(targetRenderer);
> renderer.setContentHandler(handler);
> renderer.setUserAgent(foUserAgent);
>
> foUserAgent.setRendererOverride(renderer);
>
> Fop fop =
> getFopFactory().newFop(MimeConstants.MIME_FOP_AREA_TREE, foUserAgent);
> Result res = new SAXResult(fop.getDefaultHandler());
> transformer.transform(source, res);
> return (org.w3c.dom.Document)domResult.getNode();
> } catch (TransformerException e) {
> System.out.println(e.getMessage());
> e.printStackTrace();
> } catch (FOPException e) {
> System.out.println(e.getMessage());
> e.printStackTrace();
> // } catch (IOException e) {
> // System.out.println(e.getMessage());
> // e.printStackTrace();
> } catch (SAXException e) {
> System.out.println(e.getMessage());
> e.printStackTrace();
> }
> return null;
> }
>
> double height_in_milipoints = xPath.evaluate(".//blo...@prod-id='"+<your
> id>+"']/@bpd", <your document root>, XPathConstants.NUMBER)
>
> Mit freundlichen Grüßen
>
> Georg Datterl
>
> ------ Kontakt ------
>
> Georg Datterl
>
> Geneon media solutions gmbh
> Gutenstetter Straße 8a
> 90449 Nürnberg
>
> HRB Nürnberg: 17193
> Geschäftsführer: Yong-Harry Steiert
>
> Tel.: 0911/36 78 88 - 26
> Fax: 0911/36 78 88 - 20
>
> www.geneon.de
>
> Weitere Mitglieder der Willmy MediaGroup:
>
> IRS Integrated Realization Services GmbH: www.irs-nbg.de
> Willmy PrintMedia GmbH: www.willmy.de
> Willmy Consult & Content GmbH: www.willmycc.de
> -----Ursprüngliche Nachricht-----
> Von: Bernmeister [mailto:[email protected]]
> Gesendet: Freitag, 24. April 2009 06:40
> An: [email protected]
> Betreff: Change the header/footer size in a PDF
>
>
> Hi,
>
> I have a simple XSL report with header, body and footer which renders to a
> PDF. My Java application passes variables to the XSL to set body-margin,
> header/footer-extent and font sizes.
>
> I set the header size (in point not mm) to be slightly larger than the
> font size for text to appear in the header. This works fine - gives
> enough space for the header to hold all the text.
>
> However, if the text in the header (which is set by a user back in the
> application) is "longer" than the width of the header, that text will
> carry over to a next line...and so bleed into the body.
>
> I've seen this post from a while back
> http://www.nabble.com/Auto-size-header-to-fit-with-content---td4765740.html#a4765740
>
> ...but it doesn't really help. Hardcoding for line height, text height,
> etc, etc is too dangerous.
>
> I've scoured the FOP Javadoc and cannot seem to figure out if it's
> possible to access the rendered PDF (as some sort of tree or data object)
> and work out if the header text has wrapped. Is it possible to determine
> this and so fix it?
>
> Or is it possible to access the PDF itself and determine if wrapping has
> occurred in the header?
>
> If I can detect the header has wrapped text (or footer for that matter), I
> can just increase the header by the original amount and re-render to PDF.
>
>
> Thanks in advance,
>
> Bernmeister.
> --
> View this message in context:
> http://www.nabble.com/Change-the-header-footer-size-in-a-PDF-tp23209748p23209748.html
> Sent from the FOP - Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
--
View this message in context:
http://www.nabble.com/Change-the-header-footer-size-in-a-PDF-tp23209748p23215438.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]