【问题标题】:How to show exported xml in jasper report?如何在碧玉报告中显示导出的 xml?
【发布时间】:2016-01-29 20:09:02
【问题描述】:

我们最近将碧玉报告集成到我们的系统中。现在我们可以通过标准方式使用 jasper 报告运行报告并向用户显示结果,运行并向用户显示结果。

但在某些情况下,我们需要将结果保存到对象存储中,并在用户请求时显示为文档。据我所知JasperPrint 是一个序列化对象。将报告结果作为序列化对象保存到对象存储中并不是一个好方法,因为我们体验了之前的报告工具。如果对象改变了序列化机制就不能反序列化对象。

所以我们想将 jasper 结果以 xml 格式保存到对象存储中,但我们找不到任何方法来在 JRViewer 中显示导出的 xml。

有没有办法将导出的 xml 转换为可视形式?

【问题讨论】:

  • 为什么不直接保存 PDF 文件并在需要时打开它?此外,您是否在报告生成和向用户显示报告之间重新启动应用程序?如果没有,您可以将报告存储在临时静态变量中。
  • 不喜欢 pdf 的主要原因是文件大小。对于一份 5 页的报告,将 jasper 保存为 xml 并进行压缩大约需要 5k,但对于 pdf 来说却远非如此。我们的应用程序是企业化的,创建者和查看者不会是同一个用户。
  • 我在这里做了一些测试,我能得到的最小尺寸是保存在 pdf 中......即使保存在 XML 或 jrprint 中也会导致文件大小比 PDF 更大。也许你可以以某种方式提供 jrprint?
  • 没有压缩你是对的,但压缩会改变大小。但是 pdf 和 xml 之间的大小差异是可以接受的。谢谢你的建议。除非有答案,否则我会用 pdf 来做。在这种情况下,我仍然需要一个 pdf 查看器。实际上我想在标准查看器中显示。

标签: java xml jasper-reports


【解决方案1】:

Jasper Report 提供了两种方法来保存和加载您填写的报告,JasperPrint(注意:不包括导出为 pdf、xls ecc 等其他格式,因为加载和导出为其他格式会非常困难)。

感谢@Robert MugattarovWhat is the difference between JasperReport formats?

.jrprint 是一个序列化的 JasperPrint 对象,即一个实际的报告 实例,即已填充数据的模板。这个文件可以 被反序列化回 JasperPrint 对象。

.jrpxml 是人类 JasperPrint 对象的可读 XML 表示,即 XML 已填充数据的模板版本。这个文件可以 解组回 JasperPrint 对象。

由于您不希望有序列化对象,剩下的解决方案是 中的jrpxml 格式。

保存和加载到jrpxml的示例。

//Save JasperPrint to jrpxml (xml format)
JRXmlExporter exporter = new JRXmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleWriterExporterOutput(new File("myJasperPrint.jrpxml")));
exporter.exportReport();

//Load jrpxml to JasperPrint object
JasperPrint print = JRPrintXmlLoader.load("myJasperPrint.jrpxml");

//To show it in JasperViewer
JRViewer jrv = new JRViewer(print);

如果您需要减小文件大小,我建议您压缩/解压缩 jrpxml 文件。

What is a good Java library to zip/unzip files?

【讨论】:

  • 非常感谢,这正是我想要的。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多