gpt4 book ai didi

java - 从客户端下载生成的pdf

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:51 25 4
gpt4 key购买 nike

我是 stackoverflow 的新手,因此这是我的第一篇文章。请原谅我糟糕的英语...我花了几个小时研究相关主题,但没有答案满足我的需求。我正在开发一个地址簿,我希望我的用户能够随时下载 pdf 联系人列表。一切似乎都很顺利,但实际上客户端从未下载 pdf 文件,尽管我可以使用 chrome 开发人员工具在请求中看到它。这是我的代码:

public void doPost( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException {

try {
Document document = new Document();
PdfWriter.getInstance( document, response.getOutputStream() );
document.open();
document.add( new Paragraph( "You've selected " + request.getParameter("number") + " contacts." ) );

response.setContentType("application/pdf");
response.setHeader( "Content-Disposition", "attachment; filename=\"contacts.pdf\"" );

document.close();
}
catch( DocumentException e ) {
e.printStackTrace();
}
}

在检查响应时,我得到如下信息:

%PDF-1.4%����2 0 obj>streamx�+�r�26S�00S5 0 obj>endobj6 0 obj>endobjxref0 70000000000 65535 f 0000000320 00000 n 0000000015 00000 n 0000000408 00000 n 0000000163 00000 n 0000000459 00000 n 0000000504 00000 n trailer]/Info 6 0 R/Size 7>>%iText-5.4.1startxref645%%EOF

有人好心告诉我出了什么问题吗?

最佳答案

你应该在设置响应头之前调用document.close(),这里有详细的example他们显式写入 servlet 的输出流

希望有帮助。

--[编辑]我使用 itext-2.1.7 运行了相同的代码,但使用 doGet 对我有用,可能问题是您使用的是使用 POST http 请求(doPost)的 servlet 方法,而如果您直接在服务器中点击基本 url,则会发送 GET 请求。

您可以重写服务方法,或者从 doGet 调用 doPost,或者从表单或 ajax 提交相同的 url,这将确保 http Post 调用。

关于java - 从客户端下载生成的pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376924/

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