显示由 Web 服务生成的 jasper 报告
Displaying jasper report generated by a web service
我有一个 java 桌面应用程序,它应该显示从 Web 服务获取的 jasper 报告。 Web 服务 return 是这样的字节数组:
JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return pdfByteArray;
如何在 JRViewer 中显示 returned 字节数组?我可以将字节数组转换为 JasperPrint 对象吗?我无法 return Web 服务中的 JasperPrint 对象,因为我收到 "interface" 错误。
我终于找到了解决问题的方法。首先,我 return 一个包含 xml 文件的字符串,而不是 return 来自网络服务的字节数组:
JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
String xmlString = JasperExportManager.exportReportToXml(jasperPrint);
return xmlString;
接下来在客户端应用程序中,我将此字符串转换为文档。我从 http://www.journaldev.com/1237/java-convert-string-to-xml-document-and-xml-document-to-string 得到以下方法:
private static Document convertStringToDocument(String xmlStr) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) );
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
接下来我将文件保存到本地磁盘:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult(new File("theFile.xml"));
Source input = new DOMSource(doc);
transformer.transform(input, output);
最后我使用 JRViewer 构造函数显示了新保存的 xml:
JRViewer view = new JRViewer("theFile.xml", true);
我有一个 java 桌面应用程序,它应该显示从 Web 服务获取的 jasper 报告。 Web 服务 return 是这样的字节数组:
JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
return pdfByteArray;
如何在 JRViewer 中显示 returned 字节数组?我可以将字节数组转换为 JasperPrint 对象吗?我无法 return Web 服务中的 JasperPrint 对象,因为我收到 "interface" 错误。
我终于找到了解决问题的方法。首先,我 return 一个包含 xml 文件的字符串,而不是 return 来自网络服务的字节数组:
JasperDesign jasperDesign = JRXmlLoader.load(input);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametersMap, resultSetDataSource);
String xmlString = JasperExportManager.exportReportToXml(jasperPrint);
return xmlString;
接下来在客户端应用程序中,我将此字符串转换为文档。我从 http://www.journaldev.com/1237/java-convert-string-to-xml-document-and-xml-document-to-string 得到以下方法:
private static Document convertStringToDocument(String xmlStr) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) );
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
接下来我将文件保存到本地磁盘:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult(new File("theFile.xml"));
Source input = new DOMSource(doc);
transformer.transform(input, output);
最后我使用 JRViewer 构造函数显示了新保存的 xml:
JRViewer view = new JRViewer("theFile.xml", true);