jasperreports:可以在pdf导出中看到背景图像,但在docx导出中看不到

时间:2013-04-25 21:06:26

标签: java pdf ms-word jasper-reports

报告生成:

以下代码驻留在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();     

3 个答案:

答案 0 :(得分:1)

在碧玉社区的

Looking for an answer,我可以看到你不是第一个被这个问题提出来的人。 Here is another question like yours所有人都说您无法在doc报告中将图像设置为背景。 我在旅行中发现的最后一件事是三种选择: JOD Reports最激进的选择,如果您可以更改报告引擎,请查看此信息。 Other tutorial显示了如何嵌入图像,但我不确定它是否适用于Word文档的特定情况。 The last tutorial在SO中,将文本作为背景有点尝试。

希望这会有所帮助,欢呼。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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