- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 Java 程序,它接受一个 .jrxml 文件,编译它,然后填充它。报告的数据在 XML 文件中提供。填写完成后,数据将导出为 PDF。
// Parse input document
Document document = JRXmlUtils.parse(new File(xmlFile));
// Set it as the data source in the parameters
parameters.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
// Create and set the virtualizer
JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "/tmp");
virtualizer.setReadOnly(true);
parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
// Fill the report
String jasperFile = designFile.replaceAll(".jrxml",".jasper");
print = JasperFillManager.fillReport(jasperFile, parameters);
// Export the report to PDF
ArrayList<JasperPrint> jasperPrints = new ArrayList<JasperPrint>();
jasperPrints.add(print);
JRPdfExporter exp = new JRPdfExporter();
exp.setParameter (JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);
exp.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName );
exp.exportReport();
我的困惑是关于导出
上面的填充行非常适合小型报告,但是一旦我得到一个接近 1/2 MB 的 XML 源文件,它就会旋转超过一天,无论设置文件 虚拟器(我做的)。
我看到还有另一种方法叫做 fillReportToSteam
。我的困惑是,对于 fillReport
,我必须执行额外的步骤才能导出为 PDF。 fillReportToStream
正在写入哪种流,我如何指定它? fillReportToStream
会写入 PDF 文件吗?
我没能找到任何例子。我希望我可以利用流,以便我可以衡量进度并让这些 PDF 在正常的时间跨度内完成。
最佳答案
调用 fillReportToStream
仍然会生成一个 JasperPrint
对象,但它会将其直接写入输出流,而不是将其传回给您。 JasperFillManager
无法以任何其他格式输出报告,因此不能跳过导出步骤。要生成 PDF,您仍然需要使用 JRPdfExporter
并从输出流写入报告的任何位置读取填充的报告。
我认为这里的问题是你的文件虚拟器。您提到“无论设置文件虚拟器如何,它都会旋转一天以上”,但虚拟器实际上会使该过程花费更长。这是避免内存不足错误的基本时间/内存权衡,但会使填充速度变慢。在我看到的基准测试中,添加文件虚拟器使填充时间翻了两番!
如果您确实需要虚拟器,请尝试增加您传递的 maxSize 参数。 2 看起来很低。您也可以尝试切换到 JRSwapFileVirtualizer
,因为我听说它们的性能要好得多。
关于java - 如何使用 JasperFillManager.fillReportToStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127789/
我正在尝试导入 net.sf.jasperreports.engine.export 以导出汽车的所有详细信息(数量、客户端、构造函数、类型、颜色......)。所有信息都存储在数据库中。 事实上,我
我有一个简单的 Java 程序,它接受一个 .jrxml 文件,编译它,然后填充它。报告的数据在 XML 文件中提供。填写完成后,数据将导出为 PDF。 // Parse input document
我在生成多个小型 PDF 报告(例如 50000 个报告,每个报告 2-3 页,文件大小为 50 到 60 KB)时遇到内存不足问题。生成 3000 份报告后出现内存不足错误。 执行以下行后,我发现内
我目前正在学习教程 ( http://kristantohans.wordpress.com/2010/03/01/new-to-jasperreport-build-your-first-impre
当我在开发环境(SunOS 5.10 i86pc Solaris)中启动脚本时,出现以下异常,我尝试在谷歌上搜索几个小时,尝试建议的各种解决方法,但没有解决问题。事实上,当我启动脚本时尝试使用 sup
我在我的应用程序(带有 JSP 的 Java 应用程序)中使用 Jasper 报告生成。我有一个带有表的 JSP 页面,并且我能够通过 jasper 报告成功生成包含该数据的 .xslx 文件。 我在
我正在研究 Spring MongoDB Jasper 集成示例。我有 Spring Mysql Jasper 示例,它运行良好。我正在寻找为 mongodb 转换的同一程序。 源代码位于:https
这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
当我在其参数中传递 sql 连接时,JasperFillManager 抛出一个空指针异常,但当我传递 JRResultSetDatasource 时它运行正常。 java.lang.NullPoin
我是一名优秀的程序员,十分优秀!