JasperReports:在PDF导出中可以看到背景图像,但在DOCX导出中无法看到

11

报告生成:

以下代码位于一个servlet中,它会生成一个名为“letter.docx”的Word文档用于下载和一个C盘中的“pika.pdf”文件。

我能够看到我在pika中定义的背景图像,但不能在“letter”中看到。

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

你的图片是什么格式?你尝试过改变格式吗? - Ruslan López
@RuslanLópezCarro png 图像 - Máthé Endre-Botond
3个回答

2
在jasper社区中寻找答案时,我发现你不是第一个提出这个问题的人。类似于你的另一个问题在这里都说你不能将图像设置为doc报告的背景。在我的搜索中,我找到了三个替代方案:JOD Reports是最激进的选择,如果你可以更改报告引擎,请查看它。还有其他教程展示如何嵌入图像,但我不确定在Word文档的特定情况下是否有效。最后一个教程在SO中,给你一点将文本作为背景的提示。希望这能帮到你,祝好运。

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

1
我对你的情况缺乏足够的信息,但曾经遇到过一个非常棘手的Excel导出问题,其中一个单元格在XLS文件中未能显示,但在PDF中正常显示。我发现是标题行和同一列值行之间存在单像素偏差所导致的。这会在每个值行中增加一个额外的单元格,JR无法正确填充。 因此,根据以往的经验,我的建议是检查JRXML中的偏差。由于MS Office格式不像PDF或HTML一样标准化,它们的导出往往更容易出现“故障”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接