简体   繁体   English

DynamicReports AP:导出一个空的pdf

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM