Java Call JasperReports打印问题

时间:2016-06-03 08:30:03

标签: java jasper-reports

我用Java编写了一个应用程序。对于申请,需要收到账单,我使用了JasperReports(.jrxml)文件。

我在Java代码中使用了JasperReports调用来生成账单。

当我点击打印帐单时,打印效果不正确,尺寸会减小。

实际上问题很奇怪。我正在使用台式计算机,当我从它打印时,打印正常..但是当我将项目移动到其他系统(例如,笔记本电脑)时,我得到的打印比原始打印减少了约50%。 iReport有什么问题吗?

我使用了以下Java代码:

public static void main(String[] args) throws JRException,
        ClassNotFoundException, SQLException {

    String reportSrcFile = "F:/Bills/FirstJasperReport.jrxml";

    // First, compile jrxml file.
    JasperReport jasperReport =    JasperCompileManager.compileReport(reportSrcFile);

    Connection conn = ConnectionUtils.getConnection();

    // Parameters for report
    Map<String, Object> parameters = new HashMap<String, Object>();

    JasperPrint print = JasperFillManager.fillReport(jasperReport,
            parameters, conn);

    // Make sure the output directory exists.
    File outDir = new File("C:/jasperoutput");
    outDir.mkdirs();

    // PDF Exportor.
    JRPdfExporter exporter = new JRPdfExporter();

    ExporterInput exporterInput = new SimpleExporterInput(print);
    // ExporterInput
    exporter.setExporterInput(exporterInput);

    // ExporterOutput
    OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(
            "C:/jasperoutput/FirstJasperReport.pdf");
    // Output
    exporter.setExporterOutput(exporterOutput);

    //
    SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
    exporter.setConfiguration(configuration);
    exporter.exportReport();

    System.out.print("Done!");
}

如何解决此问题

2 个答案:

答案 0 :(得分:1)

打印前是否尝试检查打印机属性?可能报告模板的大小与打印机上设置的纸张大小不匹配。

答案 1 :(得分:1)

我遇到了同样的问题。这很奇怪但是当我在Jasper Community搜索时,我找到了解决方案

代码解决了问题

PrintRequestAttributeSet printRequestAttrs = new HashPrintRequestAttributeSet();
printRequestAttrs.add(new PrinterResolution(600, 600, ResolutionSyntax.DPI)); // this resolution solved the problem
JRPrintServiceExporter exporter = new JRPrintServiceExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, report);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttrs);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
exporter.exportReport();

希望这会有所帮助!