FileOutputStream在写入字节时不附加

时间:2016-05-11 09:03:19

标签: java io jasper-reports

我有两个文件,其中一个是使用jasper生成的,另一个文件是在本地磁盘上生成的。我想要做的是在第三个文件上合并这两个文件。

FileInputStream supportingDocInputStream = new FileInputStream("/home/xyz/Desktop/reject.pdf");

FileOutputStream mergedFile = new FileOutputStream(new File("/home/xyz/Desktop/original.pdf"),true);

HashMap<String, Object> map = new HashMap<String, Object>(1);
map.put("request_id", id);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JasperDesign design = JRXmlLoader.load("/home/xyz/Desktop/jaspers/sample.jrxml");
JasperReport report = JasperCompileManager.compileReport(design);
JasperPrint print = JasperFillManager.fillReport(report, map, con);
JasperExportManager.exportReportToPdfStream(print, mergedFile);

int read=0;

while((read=supportingDocInputStream.read())!=-1){
    mergedFile.write(read); // overwriting the jasper's data
}

但我没有得到预期结果,mergedFile仅包含supportedDocInputStream的数据

2 个答案:

答案 0 :(得分:1)

连接两个PDF文件的内容不会导致合并的PDF文件。

如果要合并两个PDF文件,可以使用iText,例如参见function that can use iText to concatenate / merge pdfs together - causing some issues

答案 1 :(得分:0)

由于您使用两种不同的方法将数据写入流中,请尝试使用

mergedFile.flush();

直接在exportReportToPdfStream之后。