【问题标题】:Displaying jasper report generated by a web service显示由 Web 服务生成的 jasper 报告
【发布时间】:2015-01-20 12:30:41
【问题描述】:

我有一个 java 桌面应用程序,它应该显示一个从 Web 服务获得的碧玉报告。 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;

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

【问题讨论】:

    标签: java web-services jasper-reports


    【解决方案1】:

    我终于找到了解决问题的方法。首先,我没有从 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;
    

    接下来在客户端应用程序中,我将这个字符串转换为一个文档。我从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);
    

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多