Как правильно выровнять столбцы в 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, выравнивание должно быть повреждено. Я имею в виду три столбца должны идти в одной строке. Любая помощь в этом будет оценена