Iliadis Yannis wrote:
Here are the files I promised to send.

I see two problems:

1. you set the width of the table, but... that line is ignored:
   table.setTotalWidth(tblWidth);
You forgot to lock the with:
   table.setLockedWidth(true);
By adding this line right after setTotalWidth, you'll see that the
tables now fill the complete area.

It's even easier if you drop these two lines and use:
   table.setWidthPercentage(100);


2. you are using setAbsolutePosition AND you are adding the image to the column. You shouldn't do that. I suggest dropping setAbsolutePosition. If you do that, the image is aligned with the tables (assuming you fix the problem mentioned in 1). If you want to add some indentation, you can achieve this for instance by wrapping the image inside a chunk.

I've adapted your example so that you can have a look at it.
(It adds the logo twice, once aligned with the tables, once indented.)
--
This answer is provided by 1T3XT BVBA
http://www.1t3xt.com/ - http://www.1t3xt.info
import java.io.FileOutputStream;

import com.lowagie.text.Chunk;
import com.lowagie.text.Element;
import com.lowagie.text.Image;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;

public class CreateColumns {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            PdfReader reader=new PdfReader("columnText.pdf");
            PdfStamper stamper=new PdfStamper(reader,new 
FileOutputStream("columnTextWithTable2.pdf"));
            AcroFields aFields=reader.getAcroFields();
            PdfContentByte cb=stamper.getOverContent(1);
            int numberOfPages=reader.getNumberOfPages();
            
            float[] 
fieldBounds=aFields.getFieldPositions("form1[0].#subform[0].field[0]");
            System.out.println(fieldBounds[1]+" "+fieldBounds[2]+" 
"+fieldBounds[3]+" "+fieldBounds[4]);
            
            ColumnText ct=new ColumnText(cb);
            ct.setSimpleColumn(fieldBounds[1], fieldBounds[2], fieldBounds[3], 
fieldBounds[4]);
            
            Paragraph p=new Paragraph();
            for (int i = 0; i < 10; i++) {
               PdfPTable table=new PdfPTable(1);
               table.setWidthPercentage(100);
               PdfPCell cell=new PdfPCell();
               p.add(new Chunk(String.valueOf(i)+"\n"));
               cell.addElement(p);
               table.addCell(cell);
               ct.addElement(table);
               ct.addElement(new Chunk(" "));
               ct.go();
            }
            
            Image img=Image.getInstance("mLogo.jpg");
            img.scaleAbsoluteWidth(cm2Pnts(6f));
            img.scaleAbsoluteHeight(cm2Pnts(0.6f));
            //img.setAbsolutePosition(cm2Pnts(2f), ct.getYLine()-cm2Pnts(1f));
            ct.addElement(img);
            //cb.addImage(img,cm2Pnts(6f),0,0,cm2Pnts(0.6f),fieldBounds[1], 
ct.getYLine()-cm2Pnts(1f));
            
            Chunk chunk = new Chunk(Image.getInstance("mLogo.jpg"), 
cm2Pnts(2f), 0);
            ct.addElement(chunk);
            
            while (true) {
                int status = ct.go();
                if (!ColumnText.hasMoreText(status))
                    break;
                // we run out of column. Let's go to another one
                numberOfPages++;
                stamper.insertPage(numberOfPages, 
reader.getPageSizeWithRotation(1));
                ct.setSimpleColumn(fieldBounds[1], fieldBounds[2], 
fieldBounds[3], fieldBounds[4]);
                ct.setCanvas(stamper.getOverContent(numberOfPages));
                ct.go();
            }
            
            stamper.setFormFlattening(true);
            stamper.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static float cm2Pnts(float cm){
        return (cm*72f)/2.54f;
    }

}
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php

Reply via email to