摸索Aspose.CAD for JasperReport的科学实践(四)
Aspose Total for JasperReportsadmin 发布于:2026-07-12 11:32:05
阅读:loading
前面一篇属于是简单的实践了“JasperReports”这款软件产品,利用jrxml模板搭配CSV文件填充示例,实现了报表导出html、docx、xlsx、pptx、pdf等格式文档的简单导出案例,其实只作为一个简单的学习摸索过渡,重点还是来科学的实践一下“Aspose.Total for JasperReports”的相关产品。前面所属于不得不的行为,所谓将欲Aspose JasperReports,必先JasperReports。
Aspose.Total for JasperReports 是一套报告呈现和转换扩展,可让您将报告从 JasperReports® 和 JasperServer 导出为支持的文件格式。Aspose.Total for Reporting Services 包含以下组件:
JasperReports 的 Aspose.BarCode
以多种支持的图像格式渲染 60 多种符号的线性和二维条码,并将它们显示在 JasperReports® 上。
用于 JasperReports 的 Aspose.Cells
将报告从 JasperReports® 和 JasperServer 导出为 Microsoft Excel® 和其他支持的Excel格式。
用于 JasperReports 的 Aspose.CAD
市场上唯一一款能够将 JasperReports 报表导出为多种矢量和栅格图像文件格式的解决方案,可轻松将报表导出为各种图像格式。
Aspose.Imaging for JasperReports
从 JasperReports® 将报告导出为各种支持的图像格式(BMP、GIF、DICOM、EMF、JPEG、PSD、GIF、JPG、PNG 等)。
Aspose.PDF for JasperReports
将报告从 JasperReports® 和 JasperServer 导出为 PDF、PDF/A 和其他支持的文件格式。
用于 JasperReports 的 Aspose.Slides
将报告从 JasperReports® 和 JasperServer 导出为 Microsoft PowerPoint® 格式(PPT、PPS、PPTX、PPSX)。
Aspose.Words for JasperReports
将报告从 JasperReports® 和 JasperServer 导出为 Microsoft Word® 支持的格式。
如果有兴趣可以自行到其官网查阅更多资料,这里给出中文链接地址:https://releases.aspose.com/zh/total/jasperreports/,该页面有各个版本的产品下载,本次以当前最新版本“Aspose.Total for JasperReports 26.2.0”为例进行的学习实践,本篇文章以“Aspose.Cells for JasperReports”为主,演示其产品的相关功能示例,在官网https://docs.aspose.com/total/jasperreports/页有各个产品的更多介绍与示例。
案例实践了使用Aspose.CAD for JasperReports产品将JasperReports报表渲染为jpeg2000、jpeg、psd、tiff、png、gif、bmp、pdf、dxf、svg等格式,代码简单并非重点,所以直接给出部分参考API,参考如下所示:
@Test
public void toPdf() throws Exception {
ASPdfExporter exporter = new ASPdfExporter();
exporter.setExporterInput(new ASExportInputImpl(super.init()));
exporter.setExporterOutput(new ASExporterOutputImpl(new File("output/cad_example.pdf")));
exporter.exportReport();
}
@Test
public void toPsd() throws Exception {
ASPsdExporter exporter = new ASPsdExporter();
exporter.setExporterInput(new ASExportInputImpl(super.init()));
exporter.setExporterOutput(new ASExporterOutputImpl(new File("output/cad_example.psd")));
exporter.exportReport();
}
@Test
public void toSvg() throws Exception {
ASSvgExporter exporter = new ASSvgExporter();
exporter.setExporterInput(new ASExportInputImpl(super.init()));
exporter.setExporterOutput(new ASExporterOutputImpl(new File("output/cad_example.svg")));
exporter.exportReport();
}
生成的示例文档有十几种格式之多,仍然是挑出来几种看看即可,如下所示:

(生成pdf,科学前)

(生成pdf,科学后)

(生成svg,科学前)

(生成svg,科学后)

(生成psd,科学前)

(生成psd,科学后)
(1)`aspose.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;
(2)本文使用了Aspose.CAD for JasperReports产品将JasperReports报表渲染为PDF、WMF、SVG、EMF、BMP、GIF、JPG、JPEG、DICOM、WEBP、JP2、JPEG2000、PNG、TIFF 和 PSD等文件格式;
(3)本文使用了aspose-cad-jasperreports-20.12.jar内置的API,如不科学的使用会存在水印,科学使用也是基于原始的jar,不需要对jar文件做任何的改动;
(4)相关示例生成的所有格式文件提供《
示例下载.zip》,共计2种格式,分别是科学前和科学后的生成对比结果;
(5)前面相关的示例生成图片只包含一页A4大小的内容,确实是API没有用好,如果期望图片生成为原图,则需要去除jrxml文件中设置的图片A4大小;如果期望生成的图片每一页都作为一个A4大小的图片,且生成多页的图片等可以参考下列代码:
/*生成的图片忽略A4大小,即输出为长条图*/
parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
/*生成图片,每一页都作为一张图片*/
final List<JRPrintPage> pages = jasperPrint.getPages();
for (int i = 0; i < pages.size(); i++) {
ASPngExporter exporter = new ASPngExporter();
final JasperPrint temp = new JasperPrint();
// 2. 复制关键属性(确保页面大小、方向等一致)
temp.setName(jasperPrint.getName());
temp.setPageWidth(jasperPrint.getPageWidth());
temp.setPageHeight(jasperPrint.getPageHeight());
temp.setOrientation(jasperPrint.getOrientationValue());
temp.setTopMargin(jasperPrint.getTopMargin());
temp.setLeftMargin(jasperPrint.getLeftMargin());
temp.setBottomMargin(jasperPrint.getBottomMargin());
temp.setRightMargin(jasperPrint.getRightMargin());
// 复制其他可能影响渲染的属性,如格式、语言等
temp.setFormatFactoryClass(jasperPrint.getFormatFactoryClass());
temp.setLeftMargin(jasperPrint.getLeftMargin());
temp.setTimeZoneId(jasperPrint.getTimeZoneId());
temp.getPages().add(pages.get(i));
exporter.setExporterInput(new ASExportInputImpl(temp));
ASReportConfigurationImpl config = new ASReportConfigurationImpl();
config.setPageIndex(i + 1);
exporter.setConfiguration(config);
exporter.setExporterOutput(new ASExporterOutputImpl(new File("output/cad_all_" + (i + 1) + "_example.png")));
exporter.exportReport();
}
点赞
欢迎来到陈冬冬的学习天地 | 学习与经验整理分享平台