我必须编写一个代码来生成包含图像的Jasper报告。 我想将jasper报告发送给打印机。 我尝试了一个代码:
String Report = "C:\\Template\\"+file_name+".jrxml";//my Jasper report file
JasperPrint print = JasperFillManager.fillReport(Report,null,con);
PrinterJob job = PrinterJob.getPrinterJob();
/* Create an array of PrintServices */
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
int selectedService = 0;
/* Scan found services to see if anyone suits our needs *
for(int i = 0; i < services.length;i++)
{
if(services[i].getName().toUpperCase().contains("Your printer's name"))
{
/*If the service is named as what we are querying we select it */
selectedService = i;
}
}
job.setPrintService(services[selectedService]);
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
MediaSizeName mediaSizeName = MediaSize.findMedia(4,4,MediaPrintableArea.INCH);
printRequestAttributeSet.add(mediaSizeName);
printRequestAttributeSet.add(new Copies(1));
JRPrintServiceExporter exporter;
exporter = new JRPrintServiceExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
/* We set the selected service and pass it as a paramenter */
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, services[selectedService]);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, services[selectedService].getAttributes());
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
exporter.exportReport();
但它给了我错误:
net.sf.jasperreports.engine.JRException: Error loading object from file : C:\Template\Alcon_Ele_Temp1.jrxml
答案 0 :(得分:4)
您必须加载jasper print而不是jasper xml。有一个页面可能可以帮助您http://jasperreports.sourceforge.net/sample.reference/printservice/index.html
答案 1 :(得分:1)
首先,在打印按钮路径网址中创建一个控制器并创建一个方法。
@RequestMapping(值=“ / Print_url_link”,方法= RequestMethod.GET) public ModelAndView methodName(Model m,@RequestParam(name =“ para1”)字符串para1){
Map<String, Object> inputData = new HashMap<String, Object>();
Map<String, Object> returnData = new HashMap<String, Object>();
Map<String, Object> jasperParameterMap = new HashMap<String, Object>();
putData.put("productionID", productionID);
returnData = serviceName.methodName(inputData);
///创建服务和服务Impl并创建要使用的列表。在列表下方,我在列表中添加了0索引,因为在jasper报告中总是从索引1开始。
List<Record> list = (List<Record>) returnData.get("RecordList");
list.add(0, new Record());
JRDataSource JRdataSource =新的JRBeanCollectionDataSource(list);
// JRDataSource接口表示JasperReports数据源的抽象表示。所有数据源类型都必须实现此接口。一种包装JavaBean对象集合的数据源实现。
常见的是通过EJB等对象持久层访问应用程序数据, 休眠或JDO。此类应用程序可能需要使用其数据生成报告 已经可以作为内存JavaBean对象的数组或集合使用。
jasperParameterMap.put("ListObjectName", JRdataSource);
ModelAndView modelAndView = new ModelAndView("jrxmlviewName", jasperParameterMap);
return modelAndView;
}
现在,Jasper VIew XML映射
<bean id="jrxmlviewName"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView"
p:url="classpath:com/report/jrxmlviewName.jrxml" />
现在,在jrxml中,使用参数查看jasper报告中的数据。为英语感到抱歉
答案 2 :(得分:0)
您需要传递已编译的文件而不是jrxml文件。您可以用这种方式编译jrxml文件:
JasperReport report = JasperCompileManager.compileReport("C:\\Template\\"+file_name+".jrxml");
然后填写报告:
JasperPrint print = JasperFillManager.fillReport(report,null,con);
答案 3 :(得分:0)
Jasper Report呈现库仅呈现仅编译.jrxml文件时生成的.jasper文件。
过程是:
一旦创建了.jrxml文件(报告模板), 下一步是将其编译为.jasper文件。 有两种编译方法,
JasperCompileManager.compileReport(“ abc.xml”);
一旦它将被编译并创建.jasper,它将被加载到JasperFillManager中进行打印。
答案 4 :(得分:-1)
if语句出现问题。你把/ *签到你的if语句。
同时检查文件是否存在C:/Templates/filename.jrxml