PDF Generating Tool Support Forum

HOME   Login   Register    Search




  Subject: "Pd4ml.render" take long time to process
   PostPosted: 16 Mar 2010, 07:09 
Problem
--------
The function call of "Pd4ml.render" take long for processing HTML with large PDF attachment.

System Info
-----------
Windows 2003 Standard Edition
Lotus Domino 7.03 FP1
PD4ML Java Library Pro

Background
---------------
Our program is designed to generate PDF from Lotus Notes Email Document.
There are few steps to doing that:
1) Export a lotus Notes Document with attachment to DXL format file.
2) Use javax.xml.transform.Transformer class to convert DXL file to HTML file.
3) use pd4ml.render() function to convert HTML file to PDF.

Currently, we found that the time required to completed the function call "pd4ml.render" when the input HTML is transformed from Notes Document with a large size of PDF file attached. (e.g. 12MB PDF file need 11 minute to finish this function call).

Please kindly advise whether there is any method to speed up this case.

Part of the Code (full code of the agent is attached)
----------------------------------------------------------------
pd4ml.enableDebugInfo();
java.net.URL base = new java.net.URL("http:/yahoo.com");
java.io.StringReader isr = new java.io.StringReader("file:" + readEncFile(inputHTMLFileName, "UTF8"));
System.out.println("17");
pd4ml.render(isr, fos, base, "UTF8"); //The time between the printout of 17 and 18 shown up is about 11 min
System.out.println("18");


Attachments:
Lotus Notes Agent Source Code.txt [9.72 KiB]
Downloaded 401 times
  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 16 Mar 2010, 12:47 
Please request the most recent XSL stylesheet and the reference agent code from support pd4ml.com by email.

I suspect the following: the default XSL stylesheet of the demo Notes database represents attachment files as
<pd4ml:attachment src="data:a-lot-of-base64-data">

It takes a lot of time to parse such huge attribute value (if we are talking about tens of megabytes) and constantly reallocate string to store it.

The most recent XSL allows either to temporarily store the attachment to TMP directory and to refer to it from the attachment tag: <pd4ml:attachment src="file:/tmp/xxxyyyzzz.bin"> or to represent the attachment as tag body <pd4ml:attachment>data:a-lot-of-base64-data</pd4ml:attachment>. Both approaches are intended to solve the performance issue.


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 17 Mar 2010, 12:42 
Dear Sir/Madam,

Firstly, thank for your prompt reply.

I have asked your company's email support service to give me the new XSL. Your colleague, Igor had gave me the new XSL file. However, there some problem found.:

1) I found that new XSL file does not have the tag (<pd4ml:attachment src="file:/tmp/xxxyyyzzz.bin">) which you mentioned in last reply.

2) The XSL file that your colleague, Igor sent to me that need me to try to un-remark the line No. 298 and 308 in order to use. I have tried to keep the remark and un-remark these 2 lines. But both does not improve my pd4ml.render() function. It still cause 10-11 minutes to complete. Also, it need me to increase Min heap size of domino to around 800MB in order to successfull run. My original setting of around 500MB Min heap size will cause the domino agent throw out of memory exception.

3) Then I try to change my agent to use the one that Igor send to me. However, I found that my current Jar library does not the API "generatePDFA".

Please kindly advise what further step I can do in order to improve the speed.

Thank you very much!

Attached the XSL and agent code that Igor sent to me.


Attachments:
pd4lotus.zip [11.42 KiB]
Downloaded 112 times
  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 18 Mar 2010, 11:46 
Please forward the questions again to Igor. Missing of generatePDFA() method, means you use old version of PD4ML (probably it is cached in the database).

It would also help if you uncomment DXL dump method in the agent code and send the output to us. It should help us to reproduce the issue and to provide you with a tuned XSL stylesheet.


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 24 Mar 2010, 09:52 
Dear Sir/Madam,
We have tried to use the latest library "pd4ml.prof.360" and the latest XSL that your colleague, Igor send to me. We have tried both remark and un-remark the line No. 298 and 308 of the XSL. However, it still take about 10 min to generate a Notes Email with 10 MB attachment to the PDF using the new library, new XSL and my original coding. Please advise anyway that I can do speed up the PD4ML.render() function?

P.S. you can find our original agent code in the 1st thread of this Post.


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 24 Mar 2010, 10:32 
In order to make sure you use not cached JAR version, please open the generated document in Acroread and go to File->Properties->Description->Producer. Is there really v360?


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 25 Mar 2010, 06:41 
Dear Sir/Madam,
Just test after restart the Domino server and clicked "complile all" in Java Agent , still found that the PDF generated is in "PD4ML. HTML to PDF Converter for Java (324)". Please kindly advise how can I clear the cache. Thanks.


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 25 Mar 2010, 12:22 
Probably some steps are redundant, but try to

1. remove old JAR from agent resources using dominio designer
2. close and reopen the database again in domino designer
3. add the new JAR to the resources
4. close the database in domino designer and open in lotus notes.


  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 27 Mar 2010, 06:28 
Dear Sir/Madam,

We have changed our agent code using the latest jar (version 3.6) and XSL. Attached the PDFs generated using these new Jar. In the arcobat reader's property, it shown that these PDF are generated by "PD4ML. HTML to PDF Converter for Java (360)". So the problem of "cache" of old library is eliminated.

We have tried to generate PDF using the XSL with both line 298 to 308 remarked and un-remarked. However, it is found that it still need around 10 minute to generate a PDF of email with a 12MB attachment. Please kindly help to see whether this render() function can be speed up.


Attachments:
PDF Generated with line 298 to 308 of XSL un-remarked-.pdf [31.61 KiB]
Downloaded 155 times
PDF Generated with line 298 to 308 of XSL remarked-.pdf [31.61 KiB]
Downloaded 162 times
  Subject: Re: "Pd4ml.render" take long time to process
   PostPosted: 27 Mar 2010, 11:01 
It is strange, both PDFs have no attachment.

Try also the following configuration switches:
- change private final static boolean dontPassAttachmentsToXalan = false; to true
- change String xml = dxl.exportDxl(tmp); to String xml = dxl.exportDxl(doc);



[Reply]     [ 10 posts ] 

cron
Copyright ©2004-10 zefer|org. All rights reserved. Bookmark and Share