[英]DynamicReports AP: Exports an empty pdf
I am trying to export the report to PDF format, but it generates a blank PDF. 我正在尝试将报告导出为PDF格式,但是会生成空白PDF。
I am filling the report from JRDatasource
method. 我正在从
JRDatasource
方法填充报告。 The .show()
method shows the filled report with all columns formatted and filled, but when I export it in PDF format with .toPdf()
method it generates a blank report. .show()
方法显示所有格式设置和已填充列的填充报告,但是当我使用.toPdf()
方法将其导出为PDF格式时,它将生成空白报告。
Here is the code for the whole process: 这是整个过程的代码:
1) Generate columns for report 1) 生成报告列
InvoiceData data = new InvoiceData();
AggregationSubtotalBuilder<BigDecimal> totalSum;
StyleBuilder boldStyle = stl.style().bold();
StyleBuilder boldCenteredStyle = stl.style(boldStyle)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
StyleBuilder titleStyle = stl.style(boldStyle).setFontSize(15);
StyleBuilder CenteredStyle = stl.style().setHorizontalAlignment(HorizontalAlignment.CENTER);
StyleBuilder columnTitleStyle = stl.style(boldCenteredStyle)
.setBorder(stl.pen1Point()).setBackgroundColor(Color.LIGHT_GRAY);
TextColumnBuilder<Integer> rowNumberColumn = col.reportRowNumberColumn("No.").setFixedColumns(2).setStyle(CenteredStyle);
TextColumnBuilder<String> columnItem = col.column("Item Name", "itemname", type.stringType()).setFixedColumns(10).setStyle(CenteredStyle);
TextColumnBuilder<String> columnpkg = col.column("Pkg Date", "pkgdate", type.stringType()).setFixedColumns(7).setStyle(CenteredStyle);
TextColumnBuilder<String> columnmanf = col.column("Manft Date", "manftdate", type.stringType()).setFixedColumns(7).setStyle(CenteredStyle);
TextColumnBuilder<String> columnexp = col.column("Exp Date", "expdate", type.stringType()).setFixedColumns(7).setStyle(CenteredStyle);
TextColumnBuilder<String> columnbatch = col.column("Batch No", "batch", type.stringType()).setFixedColumns(5).setStyle(CenteredStyle);
TextColumnBuilder<Double> columnunit = col.column("Unit Price", "unit", type.doubleType()).setFixedColumns(5).setStyle(CenteredStyle);
TextColumnBuilder<Integer> columnqty = col.column("Qty", "qty", type.integerType()).setFixedColumns(2).setStyle(CenteredStyle);
TextColumnBuilder<BigDecimal> columnsub = columnqty.multiply(columnunit).setTitle("Subtotal").setFixedColumns(5).setStyle(CenteredStyle);
totalSum = sbt.sum(columnsub)
.setLabel("Total:")
.setLabelStyle(Templates.boldStyle);
2) Build report for view 2)建立报告以供查看
try {
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
java.util.Date date = new java.util.Date();
JasperReportBuilder report = DynamicReports.report();
report.setColumnTitleStyle(columnTitleStyle)
.highlightDetailEvenRows()
.title(cmp.text("MEDICAL STORE").setStyle(titleStyle).setHorizontalAlignment(HorizontalAlignment.LEFT),
cmp.text("Invoice No:").setStyle(titleStyle).setHorizontalAlignment(HorizontalAlignment.RIGHT),
cmp.text("Address of the shop").setHorizontalAlignment(HorizontalAlignment.JUSTIFIED),
Components.horizontalList().setStyle(stl.style(10)).setGap(50).add(Components.hListCell(createCustomerComponent("Bill To",data.getInvoice().getBillTo(),person,contact)).heightFixedOnTop(),
cmp.hListCell(createDoctorComponent("Prescribed By", data.getInvoice().getShipTo(),doctorregno,doctor)).heightFixedOnTop()),
cmp.verticalGap(10))
.columns(rowNumberColumn,
columnItem,
columnpkg,
columnmanf,
columnexp,
columnbatch,
columnunit,
columnqty,
columnsub)
.setDataSource(populatereport(prod,pkgdate,manufact,exp,batch,unit,qty))
.subtotalsAtSummary(totalSum)
.pageFooter(Templates.footerComponent)
.summary(Components.horizontalList(
Components.verticalGap(100),
Components.text("Thank you for your business").setStyle(Templates.bold12CenteredStyle)
))
.pageFooter(cmp.text("Address for Medical Store here"))
.show();
3) Export the report to pdf 3)将报告导出为pdf
report.toPdf(new FileOutputStream("/home/kunal/Medicam reports/Customer Bill/"+String.valueOf(dateformat.format(date))+".pdf"));
//Here is some problem when exporting to pdf
} catch(DRException e) {
e.printStackTrace();
log.error("Exception in Report");
}
Filling the Report 填写报告
private JRDataSource populatereport(String[] prod, String[] pkgdate,
String[] manufact, String[] exp, String[] batch, String[] unit,
String[] qty) {
DRDataSource dataSource = new DRDataSource("itemname", "pkgdate", "manftdate", "expdate", "batch", "unit", "qty");
for (int i = 0; i < prod.length; i++) {
dataSource.add(prod[i], pkgdate[i], manufact[i], exp[i], batch[i], Double.parseDouble(unit[i]), Integer.parseInt(qty[i]));
}
return dataSource;
}
Answering my own question 回答我自己的问题
A jar file and an import was missing jar文件和导入丢失
So added the jar 所以加了罐子
com.lowagie.text-2.1.7.jar
and imported the class 然后导入课程
import com.lowagie.text.DocumentException;
and now everything works fine!!!! 现在一切正常!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.