itext column problem

View: New views
1 Messages — Rating Filter:   Alert me  

itext column problem

by yarmageddony :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi currently i am doing a system where i would have to generate  a pdf file that would display list of worker pay .
however , upong reaching the 2nd page, the alignment went out of norms, could anyone help me in solving the problem? i am clueless and tried serveral ways to solve the alignments

below are the codes
part of the methods

public void createDoc(ArrayList list){
                try{
                        Font bold = new Font();
                        bold.setStyle(Font.BOLD);
                        Font italic = new Font();
                        italic.setStyle(Font.ITALIC);
                        Document doc=new Document(PageSize.A4.rotate());
                        String objleft[]=new String[2];
                        String objright[]=new String [2];
                       
                        int x;
                        PdfWriter writer = PdfWriter.getInstance(doc,
                                        new FileOutputStream("payroll.pdf"));
                                        doc.open();
                                        PdfContentByte cb = writer.getDirectContent();
                                        cb.setRGBColorStroke(0xC0, 0xC0, 0xC0);
                                        MultiColumnText mct=null;
                                         mct = new MultiColumnText();
                        for(x=0;x<list.size();x++){
                                cb.moveTo(PageSize.A4.getHeight()/2,0);
                                cb.lineTo(PageSize.A4.getHeight()/2, PageSize.A4.getWidth());
                                cb.stroke();
                                mct.addRegularColumns(doc.left(), doc.right(), 10f, 4);
                               
                                if(x<list.size()){
                                        objleft=(String[]) list.get(x);
                                        String sql1="SELECT * FROM worker a,workerpay b WHERE a.workerID=b.workerID AND a.workerID='"+objleft[0].toString()+"' AND b.workerpayID='"+objleft[1].toString()+"'";
                                        ResultSet rs1=payroll.data.DataConnection.read(sql1);
                                        mct.addRegularColumns(doc.left(), doc.right(), 10f, 4);
                                        mct.addElement(new Paragraph("Company"));
                                        mct.addElement(new Paragraph("Worker Name"));
                                        mct.addElement(new Paragraph("Worker IC"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Pay Date"));
                                        mct.addElement(new Paragraph("Pay Period"));
                                        mct.addElement(new Paragraph("Total Hours"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Basic Pay"));
                                        mct.addElement(new Paragraph("Bonus"));
                                        mct.addElement(new Paragraph("Additional Wages"));
                                        mct.addElement(new Paragraph("Subtotal",bold));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("(CPF)",italic));
                                        mct.addElement(new Paragraph("(Statutory)",italic));
                                        mct.addElement(new Paragraph("Subtotal",bold));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Other Adjustments"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Nett Total",bold));
                                        doc.add(mct);
                                        mct.nextColumn();
                                        while(rs1.next()){
                                                //mct.addRegularColumns(doc.left(), doc.right(), 10f, 4);
                                                mct.addElement(new Paragraph(":"+rs1.getString("companyName")));
                                                mct.addElement(new Paragraph(":"+rs1.getString("workerName")));
                                                mct.addElement(new Paragraph(":"+rs1.getString("workerIC")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs1.getString("payDate").substring(0,10)));
                                               
                                                mct.addElement(new Paragraph(":"+rs1.getString("payPeriodStart").substring(0,10)+" - "+rs1.getString("payPeriodEnd").substring(0,10)));
                                                mct.addElement(new Paragraph(":"+rs1.getString("totalHour")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs1.getString("basicPay")));
                                                mct.addElement(new Paragraph(":"+rs1.getString("bonus")));
                                                mct.addElement(new Paragraph(":"+rs1.getString("additionalWage")));
                                                mct.addElement(new Paragraph(":"+rs1.getString("subtotal1"),bold));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":( "+rs1.getString("employeecpf")+" )",italic));
                                                mct.addElement(new Paragraph(":( "+rs1.getString("Statutory")+" )",italic));
                                                mct.addElement(new Paragraph(":"+rs1.getString("subtotal2"),bold));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs1.getString("othAdj")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs1.getString("nettPay"),bold));
                                        }
                                        rs1.close();
                                        doc.add(mct);
                                        mct.nextColumn();
                                }
                                x=x+1;
                                if(x<list.size()){
                                        objright=(String[]) list.get(x);
                                        String sql2="SELECT * FROM worker a,workerpay b WHERE a.workerID=b.workerID AND a.workerID='"+objright[0].toString()+"' AND b.workerpayID='"+objright[1].toString()+"'";
                                        ResultSet rs2=payroll.data.DataConnection.read(sql2);
                                        mct.addElement(new Paragraph("Company"));
                                        mct.addElement(new Paragraph("Worker Name"));
                                        mct.addElement(new Paragraph("Worker IC"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Pay Date"));
                                        mct.addElement(new Paragraph("Pay Period"));
                                        mct.addElement(new Paragraph("Total Hours"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Basic Pay"));
                                        mct.addElement(new Paragraph("Bonus"));
                                        mct.addElement(new Paragraph("Additional Wages"));
                                        mct.addElement(new Paragraph("Subtotal",bold));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("(CPF)",italic));
                                        mct.addElement(new Paragraph("(Statutory)",italic));
                                        mct.addElement(new Paragraph("Subtotal",bold));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Other Adjustments"));
                                        mct.addElement(new Paragraph("   "));
                                        mct.addElement(new Paragraph("Nett Total",bold));
                                doc.add(mct);
                                        mct.nextColumn();
                                        while(rs2.next()){
                                                //mct.addRegularColumns(doc.left(), doc.right(), 10f, 4);
                                                mct.addElement(new Paragraph(":"+rs2.getString("companyName")));
                                                mct.addElement(new Paragraph(":"+rs2.getString("workerName")));
                                                mct.addElement(new Paragraph(":"+rs2.getString("workerIC")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs2.getString("payDate").substring(0,10)));
                                               
                                                mct.addElement(new Paragraph(":"+rs2.getString("payPeriodStart").substring(0,10)+" - "+rs2.getString("payPeriodEnd").substring(0,10)));
                                                mct.addElement(new Paragraph(":"+rs2.getString("totalHour")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs2.getString("basicPay")));
                                                mct.addElement(new Paragraph(":"+rs2.getString("bonus")));
                                                mct.addElement(new Paragraph(":"+rs2.getString("additionalWage")));
                                                mct.addElement(new Paragraph(":"+rs2.getString("subtotal1"),bold));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":( "+rs2.getString("employeecpf")+" )",italic));
                                                mct.addElement(new Paragraph(":( "+rs2.getString("Statutory")+" )",italic));
                                                mct.addElement(new Paragraph(":"+rs2.getString("subtotal2"),bold));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs2.getString("othAdj")));
                                                mct.addElement(new Paragraph("   "));
                                                mct.addElement(new Paragraph(":"+rs2.getString("nettPay"),bold));
                                                doc.add(mct);
                                               
                                               
                                        }
                                        rs2.close();
                                       
                                       
                                       
                                       
                                }
                                writer.setPageEmpty(false);
                                doc.newPage();
                        }






as you can see, i would want to have 4 columns on a page where
generation of 2 columns each when there is data in the database
using a for loop to loop an arraylist where the arraylist store string array of the data
however the problem left is the column alignment, what i get is
payroll.pdf