试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档
问题描述 投票:0回答:1
我正在使用itext7 PdfWriter创建两个ByteArrayOutputStream,然后使用merge将它们合并到一个pdf中,但是当我尝试打开最终的合并pdf时说加载失败。@GetMapping(value = "/customers",
produces = MediaType.APPLICATION_PDF_VALUE)
public ResponseEntity customersReport() throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PdfDocument pdf = new PdfDocument(new PdfWriter(out));
Document document = new Document(pdf);
Paragraph p = new Paragraph("AAAAAAAAA");
document.add(p);
document.close();
ByteArrayOutputStream out1 = new ByteArrayOutputStream();
PdfDocument pdf1 = new PdfDocument(new PdfWriter(out1));
Document document1 = new Document(pdf1);
Paragraph p1 = new Paragraph("123456A");
document1.add(p1);
document1.close();
ByteArrayOutputStream outfinal = new ByteArrayOutputStream();
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outfinal));
PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument pdf2 = new PdfDocument(new PdfReader(new ByteArrayInputStream(out.toByteArray())));
merger.merge(pdf2,1,pdf2.getNumberOfPages());
PdfDocument pdf3 = new PdfDocument(new PdfReader(new ByteArrayInputStream(out1.toByteArray())));
merger.merge(pdf3,1,pdf3.getNumberOfPages());
ByteArrayInputStream bis = new ByteArrayInputStream(outfinal.toByteArray());
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "inline; filename=customers.pdf");
return ResponseEntity
.ok()
.headers(headers)
.contentType(MediaType.APPLICATION_PDF)
.body(new InputStreamResource(bis));
}
java
spring
spring-boot
itext7
1个回答
1
投票
您必须关闭合并merger.close();
在使用其输出之前ByteArrayInputStream bis = new ByteArrayInputStream(outfinal.toByteArray());
因为仅在关闭pdf文件时完成。
热门问题
java pdf无法加载_java - 试图使用iText7合并来合并pdf 但是当我打开最终的合并pdf时 它说无法加载pdf文档 - SO中文参考 - ...