The OutOfMemoryError occurs at the cb.addImage(img) line. The image I'm
trying to write is about 210,703 KB. I'm running the below code fragment
from a Servlet in JBOSS-5.0.1.GA, Itextpdf-5.0.7, and java version
"1.6.0_20".
I'm wondering if there is a simple fix to this problem like turning
streaming to disk on for large images which I've read does occur so I'm
not sure what the problem is. This problem does not occur in a
standalone Java class but so far only when run in my servlet container.
I'm running the 32 bit version of JBOSS so I can't up the VM (-Xms1280m
-Xmx1280m) memory any more then I already have. The images are only
going to get bigger.
java.lang.OutOfMemoryError
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at
java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
at
com.itextpdf.text.pdf.OutputStreamCounter.write(OutputStreamCounter.java
:157)
at
java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:109)
at com.itextpdf.text.pdf.PdfStream.toPdf(PdfStream.java:353)
at
com.itextpdf.text.pdf.PdfIndirectObject.writeTo(PdfIndirectObject.java:1
57)
at
com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:396)
at
com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:376)
at
com.itextpdf.text.pdf.PdfWriter$PdfBody.add(PdfWriter.java:329)
at com.itextpdf.text.pdf.PdfWriter.addToBody(PdfWriter.java:780)
at com.itextpdf.text.pdf.PdfWriter.add(PdfWriter.java:3096)
at
com.itextpdf.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:3071
)
at
com.itextpdf.text.pdf.PdfWriter.addDirectImageSimple(PdfWriter.java:2998
)
at
com.itextpdf.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1228)
at
com.itextpdf.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1110)
at
com.itextpdf.text.pdf.PdfContentByte.addImage(PdfContentByte.java:1094)
Code fragment:
PdfWriter writer = PdfWriter.getInstance(document, new
FileOutputStream(outPutFile));
document.open();
PdfContentByte cb = writer.getDirectContent();
Image img = Image.getInstance(firstImageName);
PdfLayer group = new PdfLayer("Layers", writer);
PdfLayer layer1 = new PdfLayer("image", writer);
group.addChild(layer1);
cb.beginLayer(group);
cb.endLayer();
cb.beginLayer(layer1);
cb.addImage(img); // the addImage where the out of memory occurs
cb.endLayer();
document.close();
Thanks.
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php