java实现html转pdf方法步骤
1.需求:
将一个html页面转成pdf格式。
2.方法:
在实现之前先考虑一个问题,pdf是前端生成还是后端生成。这里采用pdfbox+itext(PDF文件名可自定义)技术在服务端生成。优点:免费,不需要安转软件,速度快,对于开发者而言,开发中仅需导入相应jar,且易部署。
缺点:对于html标签比较严格。
3.实现:
3.1 需要的jar
itext-2.0.8.jar+pdfbox-2.0.19.jar
3.2 准备好html页面代码(注意:这里需要手动指定字体):
sHtml += "<!DOCTYPE html[<!ENTITY nbsp ' '>]>"; sHtml += "<html>"; sHtml += "<head>"; sHtml += "</head>"; sHtml += "<body style='font-family:SimSun !important;'>"; sHtml += "<h1>这里是测试PDF代码部分</h1>"; sHtml += "</body>"; sHtml += "</html>";
3.3 服务端开始生成PDF文件:
public static void toPdf(String sHtml) { try { //创建PDf文件 ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); //C:/WINDOWS/Fonts/SimSun.ttc 系统自带的语言包,直接引用 fontResolver.addFont("C:/WINDOWS/Fonts/SimSun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); fontResolver.addFont("C:/WINDOWS/Fonts/Arial.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);// 宋体字 String sDate = new SimpleDateFormat("yyyyMMdd").format(new Date()); String sTime = new SimpleDateFormat("HHmmssSSS").format(new Date()); //指定文件存放路径 URL sUrlPath = 当前类名.class.getResource("/"); String sPath = sUrlPath.toURI().getPath(); sPath1 = sPath.replace("WEB-INF/classes/", ""); String sPathFolder = sPath+sDate+"\\"; File filePath = new File(sPathFolder); if(!filePath.exists() && !filePath.isDirectory()){ filePath.mkdirs(); } String sFileName = sDate+sTime+".pdf"; String sPathSave = sPathFolder+sFileName; OutputStream os = new FileOutputStream(sPathSave); //使用有setDocumentFromString()方法的jar包 renderer.setDocumentFromString(sHtml); renderer.layout(); renderer.createPDF(os); os.close(); } catch (Exception e) { e.printStackTrace(); } }
3.4 前端页面发起请求,服务端将生成的PDF文件返回。
String sTitle = "测试PDF文件名"; File file = new File(sFileUrl);//这里的sFileUrl即上面PDF保存路径 try { OutputStream outputStream = response.getOutputStream(); //加载pdf附件到PDF流中 PDDocument document = PDDocument.load(new FileInputStream(file)); response.reset(); response.setContentType("application/pdf;charset=UTF-8"); response.setHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode(sTitle, "UTF-8")); response.setContentType("application/pdf;charset=UTF-8"); //从PDF流中获得PDF文档属性对象 PDDocumentInformation info = document.getDocumentInformation(); //设置PDF文档属性对象的文件名称(最重要的环节) info.setTitle(sTitle); document.setDocumentInformation(info); //修改完直接输出到响应体中 document.save(outputStream); outputStream.close(); document.close(); out.clear(); out = pageContext.pushBody(); } catch (Exception e) { }
完成!
总结
到此这篇关于java实现html转pdf方法步骤的文章就介绍到这了,更多相关java html转pdf内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot整合easyExcel实现CSV格式文件的导入导出
这篇文章主要为大家详细介绍了SpringBoot整合easyExcel实现CSV格式文件的导入导出,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴可以参考下2024-02-02关于Spring的@Transaction导致数据库回滚全部生效问题(又删库跑路)
使用@Transactional一键开启声明式事务, 这就真的事务生效了?过于信任框架总有“意外惊喜”。本文通过案例给大家详解关于Spring的@Transaction导致数据库回滚全部生效问题,感兴趣的朋友一起看看吧2021-05-05SpringBoot如何读取war包jar包和Resource资源
这篇文章主要介绍了SpringBoot如何读取war包jar包和Resource资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-01-01java实现基于UDP协议网络Socket编程(C/S通信)
这篇文章主要介绍了java实现基于UDP协议网络Socket编程(C/S通信),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-10-10
最新评论