当前位置: 首页 > news >正文

使用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();

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JVM性能监控工具
  • 实现异形(拱形)轮播图
  • 高性能内存对象缓存
  • 数据中心存储市场迎强劲反弹
  • 网络如何发送一个数据包
  • Ubuntu安装cuda
  • 【Qt开发】创建并打开子窗口(QWidget)的注意事项 禁止其他窗口点击、隐藏窗口、子窗口不退出的配置和解决方案
  • TypeScript 快速上⼿ (2)
  • SiLM5932SHO系列SiLM5932SHOCG-DG 12A/12A强劲驱动电流能力 支持主动短路保护功能(ASC)单通道隔离门极驱动器
  • 电子电气架构---主流主机厂电子电气架构华山论剑(上)
  • 类和对象(3)
  • 论文阅读:Real-time Controllable Denoising for Image and Video
  • Kafka集群搭建的两种方式
  • Python之PyInstaller打包EXE程序(带音乐加图片等资源)
  • 微服务实战系列之玩转Docker(十)
  • 《Java编程思想》读书笔记-对象导论
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【技术性】Search知识
  • idea + plantuml 画流程图
  • Java深入 - 深入理解Java集合
  • js学习笔记
  • Laravel 菜鸟晋级之路
  • laravel5.5 视图共享数据
  • Less 日常用法
  • Promise面试题,控制异步流程
  • springMvc学习笔记(2)
  • Unix命令
  • webpack4 一点通
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 简析gRPC client 连接管理
  • 如何正确配置 Ubuntu 14.04 服务器?
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • $.ajax()参数及用法
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (52)只出现一次的数字III
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Java入门)学生管理系统
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)Linux Shell编程——输入输出重定向
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (学习总结16)C++模版2
  • (转)C#调用WebService 基础
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET框架
  • .NET中GET与SET的用法
  • ?php echo ?,?php echo Hello world!;?
  • @PreAuthorize注解
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
  • [Android View] 可绘制形状 (Shape Xml)