Как правильно выровнять столбцы в DynamicReports

Я использую DynamicReports для разработки отчетов в PDF. Здесь я использую ComponentColumnBuilderа также HorizantalList а также VerticalListЯ могу отображать их в виде столбцов с фиксированной шириной. Как показано ниже

Мой код выглядит следующим образом

JasperReportBuilder report = DynamicReports.report();//a new report
        StyleBuilder plainStyle = stl.style().setFontName("FreeUniversal");
        StyleBuilder boldStyle = stl.style(plainStyle).bold().setBorder(stl.pen1Point());
        StyleBuilder col1style = stl.style().setLeftBorder(stl.pen1Point());
        StyleBuilder col2style = stl.style().setLeftBorder(stl.pen1Point()).setBottomBorder(stl.pen1Point());
        StyleBuilder col3style = stl.style().bold().setBottomBorder(stl.pen1Point()).setLeftBorder(stl.pen1Point());

        VerticalListBuilder companyList = cmp.verticalList();
        companyList.add(cmp.horizontalList().add(cmp.text(field("companyName", type.stringType()))).setStyle(col1style));
        companyList.add(cmp.horizontalList().add(cmp.text(field("branchLocationAddress", type.stringType()))).setStyle(col1style));
        companyList.add(cmp.horizontalList().add(cmp.text("Mobile Number:")).add(cmp.text(field("mobileNumber", type.stringType()))).setStyle(col1style));
        companyList.add(cmp.horizontalList().add(cmp.text("Phone Number:")).add(cmp.text(field("landLineNumber", type.stringType()))).setStyle(col1style));
        companyList.add(cmp.horizontalList().add(cmp.text("Email:")).add(cmp.text(field("emailID", type.stringType()))).setStyle(col2style));
        companyList.add(cmp.horizontalList().add(cmp.text(field("OrganizationName", type.stringType()))).setStyle(col1style));
        companyList.add(cmp.horizontalList().add(cmp.text(field("DeliveryAddress", type.stringType()))).setStyle(col1style).setFixedHeight(30));
        companyList.add(cmp.horizontalList().add(cmp.text("Contact Number:")).add(cmp.text(field("PhoneNo", type.stringType()))).setStyle(col2style));
        companyList.add(cmp.horizontalList().add(cmp.text("Works Address:Same as Above")).setStyle(col3style).setFixedHeight(40));
        ComponentColumnBuilder nameColumn = col.componentColumn("", companyList).setFixedWidth(275);

        VerticalListBuilder receivingList = cmp.verticalList();
        receivingList.add(cmp.horizontalList().add(cmp.text("Invoice No")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("InvoiceNo", type.stringType()))).setStyle(col2style));
        receivingList.add(cmp.horizontalList().add(cmp.text("Delivery Note")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("DeliveryNote", type.stringType()))).setStyle(col2style));
        receivingList.add(cmp.horizontalList().add(cmp.text("Esugam NO")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("EsugamNo", type.stringType()))).setStyle(col2style));
        receivingList.add(cmp.horizontalList().add(cmp.text("Buyer Order NO")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("BuyerOrderNo", type.stringType()))).setStyle(col2style));
        receivingList.add(cmp.horizontalList().add(cmp.text("Dispatch Document NO")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("DispatchDocumentNo", type.stringType()))).setStyle(col2style));
        receivingList.add(cmp.horizontalList().add(cmp.text("Dispatch Through")).setStyle(col1style));
        receivingList.add(cmp.horizontalList().add(cmp.text(field("DispatchThrough", type.stringType()))).setStyle(col2style));
        ComponentColumnBuilder receivingColumn = col.componentColumn("", receivingList).setFixedWidth(137);

        VerticalListBuilder invoiceList = cmp.verticalList();
        invoiceList.add(cmp.horizontalList().add(cmp.text("Dated")).setStyle(col1style));
        invoiceList.add(cmp.horizontalList().add(cmp.text(field("InvoiceDate", type.stringType()))).setStyle(col2style));
        invoiceList.add(cmp.horizontalList().add(cmp.text("Mode/Terms of Payment")).setStyle(col1style));
        invoiceList.add(cmp.horizontalList().add(cmp.text(field("TermsofPayment", type.stringType()))).setStyle(col2style));
        invoiceList.add(cmp.horizontalList().add(cmp.text("Other Reference")).setStyle(col2style));

        invoiceList.add(cmp.horizontalList().add(cmp.text("Dated")).setStyle(col1style));
        invoiceList.add(cmp.horizontalList().add(cmp.text(field("BuyDate", type.stringType()))).setStyle(col2style));
        invoiceList.add(cmp.horizontalList().add(cmp.text("Dated")).setStyle(col1style));
        invoiceList.add(cmp.horizontalList().add(cmp.text(field("Dated", type.stringType()))).setStyle(col2style));
        invoiceList.add(cmp.horizontalList().add(cmp.text("Destination")).setStyle(col1style));
        invoiceList.add(cmp.horizontalList().add(cmp.text(field("Destination", type.stringType()))).setStyle(col2style));


        ComponentColumnBuilder invoiceColumn = col.componentColumn("", invoiceList).setFixedWidth(138);
                      report


        .columnHeader(//title of the report


              Components.text("Tax Invoice Cum Delivery Challan").setStyle(boldStyle).setFixedHeight(10)
              .setHorizontalAlignment(HorizontalAlignment.CENTER))

             .columns(nameColumn)
             .columns(receivingColumn)
             .columns(invoiceColumn)

              .pageFooter(Components.pageXofY())//show page number on the page footer
              .setDataSource("SELECT companyName,branchLocationAddress,mobileNumber,landLineNumber,emailID,InvoiceNo,DeliveryNote,EsugamNo,InvoiceDate,TermsofPayment,OrganizationName,DeliveryAddress,PhoneNo,BuyerOrderNo,DispatchDocumentNo,DispatchThrough,BuyDate,Dated,Destination FROM marketing_database.company_profile,marketing_database.invoiceclient_details where invoiceclient_details.CId ='1'", 
                                      connection);

        try {
                    //show the report
            report.show();

                    //export the report to a pdf file
            report.toPdf(new FileOutputStream("c:/report.pdf"));
        } catch (DRException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
      }

Как вы можете видеть на рисунке, выравнивание столбцов нерегулярно. Теперь мои вопросы, если данные в базе данных большие и когда они будут заполнять данные в PDF, выравнивание должно быть повреждено. Я имею в виду три столбца должны идти в одной строке. Любая помощь в этом будет оценена

0 ответов

Другие вопросы по тегам