Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示由web服务生成的jasper报告_Java_Web Services_Jasper Reports - Fatal编程技术网

Java 显示由web服务生成的jasper报告

Java 显示由web服务生成的jasper报告,java,web-services,jasper-reports,Java,Web Services,Jasper Reports,我有一个java桌面应用程序,它应该显示从web服务获得的jasper报告。web服务返回字节数组,如下所示: JasperDesign jasperDesign = JRXmlLoader.load(input); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperRe

我有一个java桌面应用程序,它应该显示从web服务获得的jasper报告。web服务返回字节数组,如下所示:

JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return pdfByteArray;

如何在JRWiewer中显示返回的字节数组?我可以将字节数组转换为JasperPrint对象吗?我无法从web服务返回JasperPrint对象,因为我遇到了“接口”错误。

我终于找到了问题的解决方案。首先,不是从web服务返回字节数组,而是返回一个包含xml文件的字符串,如下所示:

JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
String xmlString = JasperExportManager.exportReportToXml(jasperPrint);
return xmlString;
接下来在客户端应用程序中,我获取这个字符串并将其转换为文档。我从中获得了以下方法:

接下来,我将文档保存到本地磁盘,如下所示:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult(new File("theFile.xml"));
Source input = new DOMSource(doc);
transformer.transform(input, output);
最后,我使用JRWiewer构造函数显示了新保存的xml:

JRViewer view = new JRViewer("theFile.xml", true);
JRViewer view = new JRViewer("theFile.xml", true);