RE: RE: reuse of PDFRenderer

2001-12-13 Thread Dvorák Zdenek

Hi John,

thanks for reply. Could you give me a hint - what version of fop are you
using and the code pattern of the usage. I use very simple approach:

ByteArrayOutputStream out = new ByteArrayOutputStream();
Driver driver = new Driver();
driver.setRenderer(RENDER_PDF);
driver.setInputSource(foSrc); // defined previously
driver.setOutputStream(out);
driver.run();
// save
FileOutputStream objF = new FileOutputStream(pstrFile);
out.writeTo(objF);
objF.close();
out.close();

This approach locks some memory even if I call gc() and exit the function.

thanks

Zdenek

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, December 12, 2001 8:44 PM
To: [EMAIL PROTECTED]
Subject: Re: reuse of PDFRenderer



I don't have a solution, but I also would like to reuse or reset the
driver.  I remember seeing that reset had problems, any fixes or a way to
make it work?   I'm generating 70,000 pdf's with pretty complex fo markup
and would like to speed up the process anyway possible.  I have no memory
problems (avg pdf is less than 10 pages), I would just like to speed up the
rendering by reusing the driver.

JohnPT



 

fop-dev-return-12113-jthaemlitz=oreillyauto.com@XML.

APACHE.ORG
To: '[EMAIL PROTECTED]'
 
[EMAIL PROTECTED] 
12/12/01 09:31 AM
cc: Dvorák Zdenek [EMAIL PROTECTED]   
Please respond to fop-dev
Subject: reuse of PDFRenderer 
 

 





Hi,

this is my first time contacting the mail group. If you received this mail
in error, I am sorry.

I am building a batch printing application. This application processes huge
number of documents.

I did some measurements and found out that every document beeing processed
(Driver.run()) locks about 6 kB of memory. I invastigated the problem and
did a pool of Driver objects to reuse them. This doesn't help since the
Driver object by starting the setRenderer() method instantiates a
PDFRenderer and this is the object that after beeing finished still keeps
allocated memory. If I reset()  the driver to perform another
transformation
it creates a corrupted PDF since the renderer was not reinitialized (my
opinion).
Does anyone have an idea how to make a pool of Driver, PDFRenderer objects
or how to get rid of the memory leak?

thanks Zdenek

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]









-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




RE: RE: reuse of PDFRenderer

2001-12-13 Thread jthaemlitz


I set up logger before I begin generating PDF's
//code for setting up logger
Hierarchy hierarchy = Hierarchy.getDefaultHierarchy();
PatternFormatter formatter = new PatternFormatter( 
[%{priority}]:%{message}\n%{throwable} );
LogTarget target = new StreamTarget(System.out, formatter);
hierarchy.setDefaultLogTarget(target);
Logger log = hierarchy.getLoggerFor(fop);

I wound up writing a class that extends Driver, then I fire SAX events
instead of using XSLT.  This gave me a little more control and avoided
having to write an XML file when I get data from the database.  If I had it
to do all over again, I'd use a stylesheet and feed it a stream of XML data
from the database.  That how-to should be in the archives somewhere.  I
added some convenience methods to the class and set up my attribute objects
as static variables.  However the inline code would look something like the
following.

Driver driver = new Driver();

FileOutputStream out = new FileOutputStream( path/to/pdffile.pdf );
driver.setOutputStream(out);

driver.setLogger( log );
driver.setRenderer( billingFop.RENDER_PDF );
DefaultHandler handler = driver.getContentHandler();

handler.startDocument();
handler.startElement( http://www.w3.org/1999/XSL/Format;, root,
fo:root, new AttributesImpl() );
...
AttributesImpl blockAttrib = new AttributesImpl();
blockAttrib.addAttribute( FOURI, font-size, font-size, CDATA, 9pt
);
handler.startElement( http://www.w3.org/1999/XSL/Format;, block,
fo:block, blockAttrib );
handler.characters( text stuff in block.toCharArray(), 0, text stuff in
block.length() );
handler.endElement( http://www.w3.org/1999/XSL/Format;, block,
fo:block);
...
handler.endElement( http://www.w3.org/1999/XSL/Format;, root,
fo:root);
handler.endDocument();

out.close();

Not sure if that helps you at all, but it's one way to do it.  It DOES NOT
REUSE PDF renderer, but it has no problems with leaking memory.  It takes a
little over 4 hours to run on a AS/400 with 8 G3 processors and lot's O
ram.  It's a pretty complex report with alternating colored lines, OMR
marks, OCR font markings and different layouts for the first page, second
page and then alternating odd/even pages.  It's a good alternative for a
AS/400.

JohnPT



   
  
fop-dev-return-12127-jthaemlitz=oreillyauto.com@XML.   
  
APACHE.ORG To: 
'[EMAIL PROTECTED]'

[EMAIL PROTECTED] 
12/13/01 02:07 AM  cc: 
  
Please respond to fop-dev  
Subject: RE: RE: reuse of PDFRenderer 
   
  
   
  




Hi John,

thanks for reply. Could you give me a hint - what version of fop are you
using and the code pattern of the usage. I use very simple approach:

ByteArrayOutputStream out = new ByteArrayOutputStream();
Driver driver = new Driver();
   driver.setRenderer(RENDER_PDF);
driver.setInputSource(foSrc); // defined previously
driver.setOutputStream(out);
driver.run();
// save
   FileOutputStream objF = new FileOutputStream(pstrFile);
out.writeTo(objF);
objF.close();
out.close();

This approach locks some memory even if I call gc() and exit the function.

thanks

Zdenek

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, December 12, 2001 8:44 PM
To: [EMAIL PROTECTED]
Subject: Re: reuse of PDFRenderer



I don't have a solution, but I also would like to reuse or reset the
driver.  I remember seeing that reset had problems, any fixes or a way to
make it work?   I'm generating 70,000 pdf's with pretty complex fo markup
and would like to speed up the process anyway possible.  I have no memory
problems (avg pdf is less than 10 pages), I would just like to speed up the
rendering by reusing the driver.

JohnPT





fop-dev-return-12113-jthaemlitz=oreillyauto.com@XML.

APACHE.ORG
To: '[EMAIL PROTECTED]'

[EMAIL PROTECTED]
12/12/01 09:31 AM
cc: Dvorák Zdenek [EMAIL PROTECTED]
Please respond to fop-dev
Subject: reuse of PDFRenderer








Hi,

this is my first time contacting the mail group

Re: reuse of PDFRenderer

2001-12-12 Thread jthaemlitz


I don't have a solution, but I also would like to reuse or reset the
driver.  I remember seeing that reset had problems, any fixes or a way to
make it work?   I'm generating 70,000 pdf's with pretty complex fo markup
and would like to speed up the process anyway possible.  I have no memory
problems (avg pdf is less than 10 pages), I would just like to speed up the
rendering by reusing the driver.

JohnPT



   
  
fop-dev-return-12113-jthaemlitz=oreillyauto.com@XML.   
  
APACHE.ORG To: 
'[EMAIL PROTECTED]'

[EMAIL PROTECTED] 
12/12/01 09:31 AM  cc: 
Dvorák Zdenek [EMAIL PROTECTED]   
Please respond to fop-dev  
Subject: reuse of PDFRenderer 
   
  
   
  




Hi,

this is my first time contacting the mail group. If you received this mail
in error, I am sorry.

I am building a batch printing application. This application processes huge
number of documents.

I did some measurements and found out that every document beeing processed
(Driver.run()) locks about 6 kB of memory. I invastigated the problem and
did a pool of Driver objects to reuse them. This doesn't help since the
Driver object by starting the setRenderer() method instantiates a
PDFRenderer and this is the object that after beeing finished still keeps
allocated memory. If I reset()  the driver to perform another
transformation
it creates a corrupted PDF since the renderer was not reinitialized (my
opinion).
Does anyone have an idea how to make a pool of Driver, PDFRenderer objects
or how to get rid of the memory leak?

thanks Zdenek

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]









-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]