Subject: Re: [xsl] Fw: pdf file using xsl From: njain@xxxxxxx Date: Wed, 29 Mar 2006 11:48:55 -0500 |
James, Thanks you for the response. I already generated the small pdf report, which works very well. To me it looks like a memory issue, I haven't figured out as to what the exact size of the output which causes the application to break. I see the Windows Task Manager when the report is run and I observed that the memory usage increases dramatically, up to 409MB. Now to my understanding this is an issue with FOP, as I am supplying an FO object to it. So it doesn't have to use any XSLT, all it needs to do is transform the FO object to PDF. My XSL transformation takes only 1-2 minutes, for generating an 313MB FO object. I read in other websites that if heavy use of forward references and objects could result in more memory usage. I am using 4 tables, 2 markers and a number of outline objects. Not sure if this could be an issue. I'll try to see if I could break the xml into smaller chunks and then get the output. Is it possible to generate different pdf files and then merge them using FOP. --- Neeraj Jain 3M HIS, 8 King Road, Rockleigh NJ. 07647 USA Direct - 201 750 5931 njain@xxxxxxx neerajj@xxxxxxxxxxx James Neff <jneff@xxxxxxxxxxxxxxxx> 03/29/2006 11:37 AM To njain@xxxxxxx cc Subject Re: [xsl] Fw: pdf file using xsl I'm sorry, but I don't know much about FO itself. I have had problems with lage data files and memory problems with regular XML and XSL processing. I ended up having to break the whole process down into bite sized pieces. I found out that the processor becomes less efficient the larger the source file is. So I was able to break my process down into 4 smaller pieces and then reassamble them later. I don't know if thats an option for you or not. Probably one of the FO gurus will respond and tell you the correct way to fix this. Although 2.5 GB of memory isn't unheard of these days, throwing more horsepower at the problem shouldn't be the answer. To me, more efficiency is the answer. Saxon is a very efficient XSL processor so if its taking too long then chances are I'm doing something wrong. I would start by verifying your process is valid (in at least some cases). Take a small set of good data that will procude the PDF file you want and run that just to see if it works. If that works, then increase the input data until you reproduce the error. That probably means its a memory issue. If Its a memory issue, you need to determine if its just the stack heap isn't set high enough or is there some kind of loop your triggering with some data. If its the loop problem then its an application issue (not a technical issue with FO) and then you have to scrub the input data before allowing it into your process. I will have to deal with FO in the future though and something I need to add to my XML R'epertoire. Good luck, sorry I couldn't help you more. --James njain@xxxxxxx wrote: James, Thanks for the response. My report size could grow from 1MB to 1GB, it entirely depends on the user's selection. So if decides to get a big report, say 500 MB, I'll have to allocate 5*500=2.5GB of RAM. I was wondering if it's a possibility to stream the data instead of holding in memory. Not sure if the XML structure is complex, but I need to use xsl:for-each-group to process the xml. Apart from this, I broke the process as follows: 1. Use xml and xsl to generate the FO object 2. Use FOP to generate the pdf from FO object created in step-1. I am kind of okay with step-1, since it takes about 1-2 mins to process. But step 2 takes a long time, and doesn't give any result. Following is the code used to generate the pdf. Driver driver = new Driver(); File outFile = new File("c:\\out.pdf"); File inputFile = new File("c:\\in.pdf"); // This is the FO Object which is created using the XSLT-2.0 processor(Saxon8) OutputStream fopout = new FileOutputStream(outFile); driver.setOutputStream(fopout); driver.setRenderer(Driver.RENDER_PDF); driver.setInputSource(new InputSource(new FileInputStream(inputFile))); driver.run(); --- Neeraj Jain 3M HIS, 8 King Road, Rockleigh NJ. 07647 USA Direct - 201 750 5931 njain@xxxxxxx neerajj@xxxxxxxxxxx James Neff <jneff@xxxxxxxxxxxxxxxx> 03/29/2006 10:59 AM Please respond to xsl-list@xxxxxxxxxxxxxxxxxxxxxx To xsl-list@xxxxxxxxxxxxxxxxxxxxxx cc Subject Re: [xsl] Fw: pdf file using xsl Neeraj, Just real quick, try increasing the memory size much more. Depending on your XML structure (and how your processing it), the processor can use up to 10 times the input file size in memory to apply a stylesheet to it. Try setting it to 5-10 times what you have already. --James njain@xxxxxxx wrote: Hello, I tried this message earlier but it bounced back. I am new to this I am working on an application which requires me to generate a pdf file of up to 200MB size. I tried generating xml file and then apply xsl on it with the Apache FOP driver. The result is "Out of Memory" error. I am not sure where the out of memory error is coming, in FOP code or in Saxon8(I am using Saxon processor and XSLT 2.0). Could anyone please help me out and let me know what could be wrong. PS: I have already tried to increase the JVM memory (-Xms218m -Xmx512m). Regards. Neeraj
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Fw: pdf file using xsl, Michael Kay | Thread | RE: [xsl] Fw: pdf file using xsl, njain |
[xsl] Repost: IE applies transforma, Manfred Staudinger | Date | Re: [xsl] XSL template "namespace" , Wendell Piez |
Month |