Hi everyone,

I found something in iText (1.4.7) that might be a bug (or wrong use, of 
course...)

When creating a long table that has to be wrapped on the next page basically 
everything works fine. The table is wrapped broken into two parts.

Now if I add a header to the document, I get a third _empty_ page added to my 
document.

Here is a simple junit-test that creates two files in the temp dir named 
long_table_without_header.pdf and long_table_with_header.pdf that show the 
problem.
The test creates a document with a table containing 60 cells. In the first test 
it does not add a header, in the second test it does. After having written the 
document to the temp dir, it validates if the created document contains two 
pages. In the first test it does, in the second it does not.

If I am doing anything wrong, please give me a clue. Otherwise a bugfix or 
workaround would be great.


Christian



Here comes the TestCase:

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import junit.framework.TestCase;

import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Phrase;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;


/**
 * @author cch
 */
public class CreatePagesWithTables extends TestCase  
{
        public void testTableWithoutHeader()
                throws Exception
        {
                createPDF(false);
        }
        
        public void testTableWithHeader()
                throws Exception
        {
                createPDF(true);
        }
        
        public void createPDF(boolean addHeader) 
                throws DocumentException, IOException
        {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                
                Document document = new Document();
                
        PdfWriter.getInstance(document, baos);

        if (addHeader)
        {
                addHeader(document);
        }
        
        document.open();
     
        addTable(document);
        
        document.close();
        
        byte[] pdf = baos.toByteArray();
        
        PdfReader pdfReader = new PdfReader(pdf);
        int pages = pdfReader.getNumberOfPages();

        storePdf(pdf, addHeader);
        
        assertEquals(2, pages);
        }
        
        private void addTable(Document document) 
                throws DocumentException 
        {
                Table table = new Table(1);
                for (int i = 0; i < 60; i++) {
                        table.addCell(new Cell("cell "+i));
                }
                document.add(table);
        }

        private void addHeader(Document document) 
        {
        HeaderFooter header = new HeaderFooter(new Phrase("Just a dumb 
header"), false);
        header.setBorderWidth(1f);
        header.setBorder(HeaderFooter.BOX);
        header.setAlignment(HeaderFooter.ALIGN_LEFT);
        
        document.setHeader(header);
        }
        
        private void storePdf(byte[] pdf, boolean addHeader) 
                throws FileNotFoundException, IOException 
        {
                String tmpDir = System.getProperty("java.io.tmpdir");
                String filename = 
tmpDir+File.separator+"long_table_"+(addHeader?"with_header":"without_header")+".pdf"
 ;
                new FileOutputStream(filename).write(pdf);
        }
}
-- 
"Ein Herz für Kinder" - Ihre Spende hilft! Aktion: www.deutschlandsegelt.de
Unser Dankeschön: Ihr Name auf dem Segel der 1. deutschen America's Cup-Yacht!

-------------------------------------------------------------------------
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
[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