以下代码获取byte[]
结果,该结果适用于PDF和XLSX。对于HTML,会引发异常。
JasperPrint jasperPrint = JasperFillManager.fillReport(report,
params, dataSource != null ? new JRMapArrayDataSource(
dataSource) : new JREmptyDataSource());
ByteArrayOutputStream out = new ByteArrayOutputStream();
@SuppressWarnings("rawtypes")
Exporter exporter;
switch (format) {
case PDF:
exporter = new JRPdfExporter();
break;
case XLSX:
exporter = new JRXlsxExporter();
break;
case HTML:
exporter = new HtmlExporter();
break;
default:
throw new ReportException("Unknown export format");
}
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out));
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.exportReport();
return out.toByteArray();
HTML的例外情况是 exporter.exportReport();
:
java.lang.ClassCastException:
net.sf.jasperreports.export.SimpleOutputStreamExporterOutput cannot be cast to net.sf.jasperreports.export.HtmlExporterOutput
at net.sf.jasperreports.engine.export.HtmlExporter.exportReport(HtmlExporter.java:232)
对于v6.0和v5.6,该错误相同。这曾经在v5.0中可用(某些类在v5.6中已弃用)。
如何导出各种格式的报告,包括HTML?
对于HTML和其他格式:
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.HtmlExporter;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXmlExporter;
import net.sf.jasperreports.export.Exporter;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleHtmlExporterOutput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
public byte[] export(final JasperPrint print) throws JRException {
final Exporter exporter;
final ByteArrayOutputStream out = new ByteArrayOutputStream();
boolean html = false;
switch (getReportFormat()) {
case HTML:
exporter = new HtmlExporter();
exporter.setExporterOutput(new SimpleHtmlExporterOutput(out));
html = true;
break;
case CSV:
exporter = new JRCsvExporter();
break;
case XML:
exporter = new JRXmlExporter();
break;
case XLSX:
exporter = new JRXlsxExporter();
break;
case PDF:
exporter = new JRPdfExporter();
break;
default:
throw new JRException("Unknown report format: " + getReportFormat().toString());
}
if (!html) {
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(out));
}
exporter.setExporterInput(new SimpleExporterInput(print));
exporter.exportReport();
return out.toByteArray();
}
使用以下命令调用它:
JasperPrint print = JasperFillManager.fillReport(report, parameters, dataSource);
byte report[] = export(print);
问题内容: 我必须提供一些导出功能到我的网站,例如CSV或PDF。Java是否有功能强大且免费的工具将HTML页面转换为PDF格式? 问题答案: 与一起使用可以将HTML内容转换为PDF。 以下示例在某种程度上帮助您理解XHTML到PDF的转换。 使用飞碟API的示例 : 您需要以下库: core-renderer.jar iText-2.0.8.jar 您可以在中找到这些资源。 例1:使用XML
下表所示为 CampusBuilder 中支持的文件导出格式。 序号 分类 格式 名称 说明 1 ThingJS .tjs ThingJS 场景包2020 由 ThingJS 场景文件和自定义模型组成。此格式的文件只能由 ThingJS 打开。 2 ThingJS .tjs ThingJS 场景包2019 由 ThingJS 场景文件和自定义模型组成。此格式的文件只能由 ThingJS 打开。 3
我的Java应用程序生成了一个填充JasperReports报表的pdf文件,但当我打开pdf文件时,它的字体总是“Arial”,在报表中设置为“DeJavu Sans”。 当我使用JasperReports函数导出到pdf文件时,一切正常(之后,我导入了DejaVu Sans的.ttf文件)。只有当我使用Java应用程序时,问题才会持续存在。 有人有同样的问题吗?
问题内容: 当使用Express for Node.js时,我注意到它输出的HTML代码没有换行符或制表符。尽管下载可能更有效,但在开发过程中可读性不强。 如何获得Express以输出格式正确的HTML? 问题答案: 在您的主要位置或所在位置: 快递4.x 快递3.x 快递2.x 我输入漂亮的字样是因为您希望通过使用“丑陋”来提高效率。在生产中进行部署时,请确保设置环境变量。可以使用您在的“脚本”
在Jquery Mobile中通过默认方法给内容添加样式是很简单的。我们的目标是让浏览器的默认渲染优先进行,然后我们加了一点小小的padding让页面看起来更有可读性,然后应用主题样式系统来分配字体和颜色 采用熟手优先原则给与了设计者和开发者一个干净的空间工作,而不是和一大堆复杂的样式代码战斗。 默认HTML标记样式 Default HTML markup styling 默认情况下,Jquery
问题内容: 我正在创建一个HTML表,将在Excel中作为电子表格打开。我可以使用哪种HTML标记或CSS样式“讲述” Excel以将单元格的内容显示为文本? 问题答案: 您可以将格式应用于数字,文本,日期等的单元格。 请参阅我以前关于此的答案:HTML toExcel:如何告诉Excel将列视为数字? (已调整的代码段) 如果将CSS类添加到页面: 并在您的TD上拍那些课,行得通吗?