Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » iText »

Re: [iText-questions] Stack overflow error using iText

Webber, David (NIH/OD) [C]

2006-08-02

Replies:

Paulo,

OK - thanks for checking that out.

We'll have to dig into our code some more then.

Clearly it's looping for some reason -
PdfDocument.add(PdfDocument) / Phrase.process(Phrase) /
PdfDocument.add(PdfDocument) / PdfDocument.initPage(PdfDocument) /
PdfDocument.newPage(PdfDocument) /
PdfDocument.carriageReturn(PdfDocument)

Tough to know where the issue is - perhaps we have some termination
condition invalid somewhere - we'll see.

If we still can't find it - we'll work on a standalone next - right now
the full code base has a lot of dependencies to our database and
environment.

It's also streaming all this in memory too.

OK - thanks for the help.

DW

-----Original Message-----
From: Paulo Soares [mailto:psoares@(protected)]
Sent: Wednesday, August 02, 2006 10:15 AM
To: Post all your questions about iText here
Subject: Re: [iText-questions] Stack overflow error using iText

Works for me. It's better to post standalone code to reproduce the
problem
rather than a code fragment.

Paulo

----- Original Message -----
From: "Webber, David (NIH/OD) [C]" <webberd@(protected)>
To: "Post all your questions about iText here"
<itext-questions@(protected)>
Sent: Tuesday, August 01, 2006 4:43 PM
Subject: [iText-questions] Stack overflow error using iText


> Folks - finally been able to isolate this issue with two samples:
>
> http://www.drrw.net/temp/iText/stackoverflow-sample1.pdf
>
> http://www.drrw.net/temp/iText/stackoverflow-sample2.pdf
>
> When we attempt to run them through iText we get the "stack overflow"
> error occurring.
>
> Here's the code fragment of how we are using iText, and here's also
the
> java log details of the loop that leads to the stack overflow crash.
>
> Thanks, DW
>
>
========================================================================
> ===
>
> private void addReaderData(com.lowagie.text.Document pdfDocument,
>
>                        PdfReader reader, PdfWriter writer,
> String bookmarkText, String attachmentName) throws Throwable {
>
>                int i = 0;
>
>                PDFGenerationThrowable pth=null;
>
>                MessageCollection messages = new
> MessageCollection();
>
>                try {
>
>                        int n = reader.getNumberOfPages();
>
>
>                        PdfContentByte cb =
> writer.getDirectContent();
>
>
>
>                        while (i < n) {
>
>                                i++;
>
>                                cat.debug("Add Reader
> Data Page # "+i+ attachmentName);
>
>
> pdfDocument.setPageSize(reader.getPageSizeWithRotation(i));
>
>                                pdfDocument.newPage();
>
>                                // pdfDocument.add(new
> Paragraph("This is a test"));
>
>                                PdfImportedPage page =
> writer.getImportedPage(reader, i);
>
>                                int rotation =
> reader.getPageRotation(i);
>
>
>
>                                cat.debug("HEIGHT = "
>
>
> + reader.getPageSizeWithRotation(i).height());
>
>
>
>                                if (rotation == 90 ||
> rotation == 270) {
>
>
> cb.addTemplate(page, 0, -1f, 1f, 0, 0, reader
>
>
> .getPageSizeWithRotation(i).height());
>
>                                } else {
>
>
> cb.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
>
>                                }
>
>                                //
> pdfDocument.setFooter(pageFooter);
>
>                        } // end while
>
>                }catch(Exception e)
>
>                {
>
>                        cat.debug("Exception in
> addReaderData method while PDF Rotation", e);
>
>                        throw e;
>
>                }
>
>                catch(StackOverflowError sth)
>
>                {
>
>                        cat.debug("Stack over Flow error in
> addReaderData method while PDF Rotation", sth);
>
>                        ArrayList tokens = new ArrayList();
>
>                        tokens.add(new Integer(i));
>
>
> tokens.add(bookmarkText+"{"+attachmentName+"}");
>
>                        pdfErrors.add(new
> Message(MessageKeys.EGRANTS_INVALID_PDF_STACK_OVER_FLOW_ERROR,
tokens));
>
>
>                } catch (Throwable th) {
>
>                         cat.debug("Exception in
> addReaderData method while PDF Rotation",th);
>
>                        //throw new
> StackOverFlowException(i,bookmarkText,new Exception());
>
>                         throw th;
>
>                }
>
>        } // addReaderData()
>
> ==============================================
> Log details:
>
> 2006-08-01 11:36:57,107 DEBUG Task-0
> gov.nih.egrants.beantier.processor.EgrantsFE - [GRANT00072741] - Stack
> over Flow error in addReaderData method while PDF Rotation
>
> java.lang.StackOverflowError
>
>        at
> com.lowagie.text.pdf.BaseFont.getBaseName (BaseFont.java:421)
>
>        at
> com.lowagie.text.pdf.BaseFont.createFont (BaseFont.java:360)
>
>        at
> com.lowagie.text.pdf.BaseFont.createFont (BaseFont.java:332)
>
>        at
> com.lowagie.text.Font.getCalculatedBaseFont (Font.java:718)
>
>        at com.lowagie.text.pdf.PdfChunk.<init>(PdfChunk.java:203)
>
>        at
> com.lowagie.text.pdf.PdfDocument.add (PdfDocument.java:1328)
>
>        at com.lowagie.text.Phrase.process (Phrase.java:299)
>
>        at
> com.lowagie.text.pdf.PdfDocument.add (PdfDocument.java:1478)
>
>        at
> com.lowagie.text.pdf.PdfDocument.initPage (PdfDocument.java:1935)
>
>        at
> com.lowagie.text.pdf.PdfDocument.newPage (PdfDocument.java:812)
>
>        at
> com.lowagie.text.pdf.PdfDocument.carriageReturn (PdfDocument.java:2071)
>
>        at
> com.lowagie.text.pdf.PdfDocument.add (PdfDocument.java:1333)
>
>        at com.lowagie.text.Phrase.process (Phrase.java:299)
>
>        at
> com.lowagie.text.pdf.PdfDocument.add (PdfDocument.java:1478)
>
>        at
> com.lowagie.text.pdf.PdfDocument.initPage (PdfDocument.java:1935)
>
>        at
> com.lowagie.text.pdf.PdfDocument.newPage (PdfDocument.java:812)
>
>        at
> com.lowagie.text.pdf.PdfDocument.carriageReturn (PdfDocument.java:2071)
>
>        at
> com.lowagie.text.pdf.PdfDocument.add (PdfDocument.java:1333)
>
>        at com.lowagie.text.Phrase.process (Phrase.java:299)
>
>
> and sequence loops until stack overflows...
>
>
------------------------------------------------------------------------
-
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
share
> your
> opinions on IT & business topics through brief surveys -- and earn
cash
>
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE
V
> _______________________________________________
> iText-questions mailing list
> iText-questions@(protected)
> https://lists.sourceforge.net/lists/listinfo/itext-questions


------------------------------------------------------------------------
-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share
your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE
V
_______________________________________________
iText-questions mailing list
iText-questions@(protected)
https://lists.sourceforge.net/lists/listinfo/itext-questions

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
iText-questions mailing list
iText-questions@(protected)
https://lists.sourceforge.net/lists/listinfo/itext-questions
©2008 junlu.com - Jax Systems, LLC, U.S.A.