报告生成:
以下代码驻留在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();
答案 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模板中的元素填充此表的每个单元格。 如果模板中的元素与另一个元素重叠,则不会显示另一个元素,因为在表中,单元格不能与另一个单元格重叠。