@PostMapping(value = "/ShowPdf")
public void exportExcel(HttpServletResponse response ) throws IOException {
RespondResultPojo respondResultPojo=new RespondResultPojo();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4.rotate());
try {
// 创建一个 PdfWriter 实例
PdfWriter.getInstance(document, baos);
// 打开文档
document.open();
// 添加内容到文档
Paragraph paragraph = new Paragraph("Hello, this is a PDF generated with iText!");
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
// 关闭文档
} catch (DocumentException e) {
e.printStackTrace();
} finally {
if (document.isOpen()) {
document.close();
}
}
// 获取 PDF 字节数组
byte[] pdfBytes = baos.toByteArray();
// 设置 HTTP 响应头
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=example.pdf");
// 获取 ServletOutputStream
ServletOutputStream outputStream = response.getOutputStream();
// 将 PDF 字节数组写入输出流
outputStream.write(pdfBytes);
// 刷新并关闭输出流
outputStream.flush();
outputStream.close();
}
前端代码
handleClick () {
axios({
method: 'post',
url: '/CheckStore/ShowPdf',
responseType: 'blob'
})
.then((response) => {
const blobUrl = window.URL.createObjectURL(new Blob([response.data], { type: 'application/pdf' }))
window.open(blobUrl, '_blank')
const link = document.createElement('a')
link.href = blobUrl
link.setAttribute('download', 'example.pdf')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
setTimeout(() => {
window.URL.revokeObjectURL(blobUrl)
}, 100)
})
.catch((error) => {
if (error === 'NotLogin') {
this.router.push('/')
ElMessage({
message: ' 请登录',
type: 'error'
})
} else {
ElMessage({
message: error,
type: 'error'
})
}
})
}