我正在使用 pdfbox 生成一个 pdf 文件,并尝试从 Jersey (jax-rs) REST API 返回它。问题是收到的 pdf 文件是空的。如果我将文件保存在服务器中,则文件正确。也许问题出在流或响应处理中。
我已经尝试解决这个问题很长一段时间了,希望它最终能正常工作。
这是我尝试使用的代码。
@GET
@Path("/generateReport/{name}/{id}")
@Produces("application/pdf")
public Response generateReport(@PathParam("name") String name) {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
PDFont courierBoldFont = PDType1Font.COURIER_BOLD;
int fontSize = 12;
PDPageContentStream contentStream;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
document.addPage(page);
contentStream = new PDPageContentStream(document, page);
contentStream.beginText();
contentStream.setFont(courierBoldFont, fontSize);
contentStream.newLineAtOffset(150, 750);
contentStream.showText("Hello " + name);
contentStream.endText();
contentStream.close();
document.save(output);
document.close();
} catch (IOException e) {
e.printStackTrace();
}
Response.ResponseBuilder responseBuilder = Response.ok(output.toByteArray());
responseBuilder.type("application/pdf");
responseBuilder.header("Content-Disposition", "filename=test.pdf");
return responseBuilder.build();
}
Run Code Online (Sandbox Code Playgroud)
如上所述,如果我将文档保存为文件而不是流,则使用下面的代码创建的 pdf 是正确的。
document.save("/Users/solmar/Dev/temp/" + name + ".pdf");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |