使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘

在这里插入图片描述

依赖如下

<!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf -->
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.22</version>
</dependency>

测试本地导出时一切正常,代码如下

public static void main(string[] args) throws Exception {
String html ="<html><body><h1>Hello World!</h1></body></html>";
File file = new File("output.pdf");
ITextRenderer renderer = new  TextRenderer();
renderer.setDocumentFromstring(html);
renderer.layout();
try(Outputstream os= Files.newOutputstream(file.toPath())) {
	renderer.createPDF(os);
}

导出的文件打开是正常的,然后尝试接口导出了,代码如下

public void export(HttpServletResponse response, string html) throws Exception 	{
	iITextRenderer renderer = new ITextRenderer():
	renderer.setDocumentFromstring("<html><body><h1>Hello World!</h1></body></html>"),
	renderer.layout();
	response.setContentType("application/pdf");
	response.setCharacterEncoding("UTF-8");
	response.setHeader(s:"Content-Disposition";
	renderer.createPDF(response.getOutputstream(), false):
	renderer.finishPDF():
	response.getoutputstream().flush();
}

然后导出后打不开了

解决方案:删除最后一行代码

删除这行代码
response.getoutputstream().flush();

删除后重启项目导出没问题了

最新测试,原来不是上面的问题。而是没调用下面这行代码时就会报错,上面代码也可以移除

要有这行代码,不然导出的PDF有问题
renderder.finishPDF();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值