gpt4 book ai didi

java - IText 7 - 如何通过 Rest Api 发送 PDF 而不存储文件?

转载 作者:行者123 更新时间:2023-12-02 07:30:39 28 4
gpt4 key购买 nike

这是我第一次使用 iText 7 库。我想发送通过我的 @Get http 响应生成的 pdf,而不将该文件存储在我的服务器上。我试过这个:

@GET
@Path("/generatePDF")
@Produces({MediaType.APPLICATION_OCTET_STREAM})
public Response generatePDF() {
try {

String text ="This is the text of my pdf";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(baos));

Document doc = new Document(pdfDoc);
doc.add(new Paragraph(text));
doc.close();
System.err.println("doc closed");


return Response.ok().entity(baos).
header("Content-Disposition",
"attachment; filename=\"mypdf - " + new Date().toString() + ".pdf\"")
.header("Expires", "0")
.header("Cache-Control","must-revalidate, post-check=0, pre-check=0")
.header("Pragma", "public")
.build();
} catch (Exception e) {
e.printStackTrace();
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();
}
}

但是我遇到了以下错误:

GRAVE [http-nio-8080-exec-4] org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo MessageBodyWriter not found for media type=application/octet-stream, type=class java.io.ByteArrayOutputStream, genericType=class java.io.ByteArrayOutputStream.

你知道如何做到这一点吗?我在文档中没有找到任何内容。

最佳答案

Response 需要 InputStream 而不是 OutputStream。因此,只需将字节重新包装到 InputStream 中并发送响应即可:

ByteArrayInputStream pdfStream = new ByteArrayInputStream(baos.toByteArray());
return Response.ok().entity(pdfStream);

关于java - IText 7 - 如何通过 Rest Api 发送 PDF 而不存储文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825729/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com