11

报告生成:

以下代码驻留在 servlet 中,并生成要下载的“letter.docx”word 文档和 C 语言中的“pika.pdf”文件:

我可以看到我在 pika 中定义的背景图像,但在“字母”中看不到。

        InputStream is = request.getServletContext().getResourceAsStream("/resources/reports/" +name);      
        JasperReport jr = JasperCompileManager.compileReport(is);                           
        JasperPrint jp = JasperFillManager.fillReport(jr, params, ds);      
        JRExporter exp = new JRDocxExporter();
        exp.setParameter(JRExporterParameter.JASPER_PRINT, jp);         
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        exp.setParameter(JRExporterParameter.OUTPUT_STREAM, bos);       
        exp.exportReport(); 

        JasperExportManager.exportReportToPdfFile(jp, "C:\\pika.pdf");

        byte[] bytes = bos.toByteArray();       

        response.reset();       
        response.setContentType("application/octet-stream");
        response.setHeader("Content-disposition", "attachment; filename=\"letter.docx\"");              
        response.getOutputStream().write(bytes);
        response.getOutputStream().flush();
        response.getOutputStream().close();     
4

3 回答 3

2

在 jasper 社区中寻找答案,我可以看到您不是第一个被此要求的人。 这是另一个像你一样的问题,说你不能在文档报告中将图像设置为背景。我在旅行中发现的最后一件事是三种选择: JOD 报告最激进的选择,如果您可以更改报告引擎,请查看此选项。 其他展示如何嵌入图像的教程,但我不确定它是否适用于 Word 文档的特定情况。 最后一个教程Here in SO,有点把文字作为背景的味道。

希望这会有所帮助,干杯。

于 2013-05-06T23:43:40.883 回答
1

JRDocxExporter 是一个网格导出器,它生成一个表格,然后用 jasper 模板中的元素填充该表格的每个单元格。如果模板中的一个元素与另一个元素重叠,则不会显示另一个元素,因为在表格中,一个单元格不能与另一个单元格重叠。

于 2018-06-08T11:11:27.167 回答
1

我没有关于您的案例的足够信息,但是一旦我在 Excel 导出方面遇到了一个非常讨厌的问题,XLS 中就没有显示一个单元格,但在 PDF 中它显示得很好。我发现只是同一列的标题带和值带之间的单个像素未对齐。这为每个值行带来了一个额外的单元格,JR 无法正确填充它。因此,根据以前的经验,检查 JRXML 中的错位是我的建议。由于 MS Office 格式没有很好地标准化为 PDF 或 HTML,因此它们的导出往往更加“出错”。

于 2018-01-10T17:38:42.167 回答