将第一个代码与上面这段代码结合起来
时间: 2024-03-08 12:49:33 浏览: 69
两个代码
好的,结合起来的代码如下:
```java
@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 生成 HTML
String html = "<html><body><h1>Hello, World!</h1></body></html>";
// 将 HTML 转换为 PDF
byte[] pdfBytes = convertToPdf(html);
// 设置响应头,告诉浏览器这是一个 PDF 文件
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;filename=example.pdf");
// 将 PDF 文件作为流写入到响应中
ServletOutputStream out = response.getOutputStream();
out.write(pdfBytes);
out.flush();
out.close();
}
private byte[] convertToPdf(String html) throws IOException, DocumentException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter.getInstance(document, outputStream);
document.open();
InputStream inputStream = new ByteArrayInputStream(html.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(new PdfWriterPipeline(document, null), document, inputStream, Charset.forName("UTF-8"));
document.close();
return outputStream.toByteArray();
}
}
```
这段代码中,我们在 doGet 方法中先生成了 HTML,然后调用了 convertToPdf 方法将其转换为 PDF。最后,将生成的 PDF 文件作为流直接返回给客户端。注意,这里的响应头中的 Content-disposition 属性设置为 attachment,表示将 PDF 文件作为附件下载。如果不需要下载,可以设置为 inline。
阅读全文