quarkus 使用jasperreport 做打印的demo
时间: 2023-08-31 16:06:28 浏览: 186
好的,下面是一个简单的示例,演示如何在 Quarkus 应用程序中使用 JasperReports 来生成 PDF 报表并将其打印。
首先,您需要在 `pom.xml` 文件中添加以下依赖项:
```xml
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.17.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.13</version>
</dependency>
```
接下来,您需要创建一个 JasperReports 模板文件,可以使用 JasperReports Studio 或手动编写。这里我们假设模板文件名为 `template.jrxml`。
然后,您需要在您的代码中加载模板文件,并将数据填充到模板中:
```java
// 加载模板文件
InputStream templateFile = getClass().getResourceAsStream("/template.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(templateFile);
// 填充数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("name", "John Doe");
parameters.put("age", 30);
JRDataSource dataSource = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
```
接下来,您可以使用 `JasperExportManager` 将 JasperPrint 对象导出为 PDF 文件:
```java
// 导出 PDF 文件
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
byte[] pdfBytes = outputStream.toByteArray();
```
最后,您可以使用 Quarkus 提供的 `@Produces(MediaType.APPLICATION_PDF)` 注解将 PDF 文件作为响应返回:
```java
@GET
@Path("/print")
@Produces(MediaType.APPLICATION_PDF)
public Response printReport() throws JRException {
// 加载模板文件
InputStream templateFile = getClass().getResourceAsStream("/template.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(templateFile);
// 填充数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("name", "John Doe");
parameters.put("age", 30);
JRDataSource dataSource = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// 导出 PDF 文件
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
byte[] pdfBytes = outputStream.toByteArray();
// 返回 PDF 文件
return Response.ok(pdfBytes).build();
}
```
这样,您就可以通过访问 `/print` 端点来生成并打印 PDF 报表了。请注意,此示例中使用的是 iText 2 和 JasperReports 6.17.0,您可以根据自己的需要使用其他版本。
阅读全文