我用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!");
}
如何解决此问题
答案 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();
希望这会有所帮助!