I am having a problem with running out of memory when concatenating files. I
did search the issues and have found no solution.   Below is my code. The
output steam that is passed into the method for testing is a
FileOutputStream. I am currently using itext 1.3 but I tested and had the
same issue with the latest release. You can see I use a PDFCopy and do not
keep any references to the reader around.
 
The heap seems to grow very quickly.
 
Can you please help?
Thanks
David
 
    public static void assembleOnLargePDF(Rectangle pageSize, OutputStream
sos, File jobDir, boolean paper, boolean preview, List<String> householdIDs)
throws DocumentException, IOException
    {
 
        Runtime runtime = Runtime.getRuntime();
        System.gc();
 
        System.out.println("Starting Process " + runtime.freeMemory() + " of
" + runtime.maxMemory());
        Document allHHDocument = new Document(pageSize, 0, 0, 0, 0);
        PdfCopy allHHCopy = new PdfCopy(allHHDocument, sos);
 
        allHHDocument.open();
        int count = 0;
        for(String householdID : householdIDs)
        {
            System.gc();
            System.out.println("Starting HH " + (count) + " " +
runtime.freeMemory());
 
            FileInputStream fileInputStream;
            try
            {
                File file = new File(jobDir, householdID + ".pdf");
                if(file.exists()) fileInputStream = new
FileInputStream(file);
                else continue;
            }
            catch(FileNotFoundException e)
            {
                continue;
            }
            PdfReader r = null;
            try
            {
                r = new PdfReader(fileInputStream);
                int numberOfPages = r.getNumberOfPages();
                for(int j = 1; j <= numberOfPages; j++)
                {
                    allHHCopy.addPage(allHHCopy.getImportedPage(r, j));
 
                }
 
                allHHCopy.freeReader(r);
 
                sos.flush();
            }
            finally
            {
                if(r != null) 
                    r.close();
                fileInputStream.close();
            }
            System.gc();
 
            System.out.println("Ending HH " + (count++) + " " +
runtime.freeMemory());
        }
        allHHDocument.close();
        allHHCopy.close();
        System.gc();
        System.out.println("Ending Process " + runtime.freeMemory());
 
    }

 
-- 
View this message in context: 
http://www.nabble.com/Out-of-memory-when-concatenating----I-have-read-the-previous-threads-tf4576701.html#a13064186
Sent from the iText - General mailing list archive at Nabble.com.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/

Reply via email to