摸索Aspose.CAD for JasperReport的科学实践(四)

Aspose Total for JasperReports
placeholder image
admin 发布于:2026-07-12 11:32:05
阅读:loading

前面一篇属于是简单的实践了“JasperReports”这款软件产品,利用jrxml模板搭配CSV文件填充示例,实现了报表导出html、docx、xlsx、pptx、pdf等格式文档的简单导出案例,其实只作为一个简单的学习摸索过渡,重点还是来科学的实践一下“Aspose.Total for JasperReports”的相关产品。前面所属于不得不的行为,所谓将欲Aspose JasperReports,必先JasperReports。

1.基本介绍

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/页有各个产品的更多介绍与示例。

2.参考代码

案例实践了使用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();
}

3.生成文档

生成的示例文档有十几种格式之多,仍然是挑出来几种看看即可,如下所示:

image.png

(生成pdf,科学前)

image.png

(生成pdf,科学后)

image.png

(生成svg,科学前)

image.png

(生成svg,科学后)

image.png

(生成psd,科学前)

image.png

(生成psd,科学后)

4.其它说明

(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();
}

 点赞


 发表评论

当前回复:作者

 评论列表


留言区