View on GitHub

htmlToPdf

use wkhtmltopdf and PDFBOX to convert Html to PDF and Image

动态生成HTML并生成PDF和图片

项目说明

项目参考自参考链接,修正其不能在linux内正常使用的问题(原项目的LinuxPath并不正确), 并使用Apache PdfBox将生成出来的PDF文件转化为PNG图片,以解决用wkhtmltoimage生成出来的图片过大的问题。 即通过转PDF省去一步图片压缩的任务,而PDF又正好是业务需要的。使用字符串拼接,帮助用户拼接wkhtmltopdf需要 的参数指令,避免不必要的麻烦。

工程说明

/html2file 工程输出文件目录

/html2file/plugin wkhtmltox的位置,pdf就是靠调用它生成出来的

/html2file/html /html2file/image /html2file/pdf 生成的3种文件存放目录

description.html 是一份以 wkhtmltopdf–helpdoc 的方式导出的说明文档。

src/main/java/top/spencercjh/controller#getCert(String data) 具体写了我需要的业务逻辑

MyService MyServiceImpl 我的业务逻辑:将前端传入的数据替换掉template.html中的内容

top.spencercjh.config.WebConfig 中配置了filter,允许用户能够访问生成出来的资源。

接口说明

读了description.html后,如有需要其他参数请发issue

部署说明

已经在所有的业务流程中区分了Windows/Linux,请用户务必去修改对应的目录。

若没有SSL需要配置,删除或注释application.properties中的

    server.ssl.key-store-password=1523355275441
    server.ssl.key-store=1523355275441.pfx
    server.ssl.key-store-type=PKCS12

否则将不能正常运行。

若需要配置,修改上述字段,并将秘钥文件放入相应位置

Windows平台部署

将项目中html2file文件夹移到你想要的位置,修改application.properties中的以下配置信息

    windows-template-path=D:/test/html2file/template.html
    windows-output-html-path=D:/test/html2file/html/
    windows-output-image-path=D:/test/html2file/image/
    windows-output-pdf-path=D:/test/html2file/pdf/
    windows-plugin-path=D:/test/html2file/plugin/window/wkhtmltopdf/bin/wkhtmltopdf

Windows操作系统默认GB2312编码,而我们的开发工作都使用UTF-8,我已经很努力地去解决这个问题了。

如果你直接在IDEA里运行SpringBoot项目,我可以保证全程UTF-8并使生成结果无乱码。

如果你使用java -jar html2Pdf-2.0-SNAPSHOT.jar在Windows上部署Jar包,那么生成出来的东西仍然会有乱码,我无力解决 ,知道的请联系我。

Linux平台部署

将项目中html2file文件夹移到你想要的位置,修改application.properties中的以下配置信息

    linux-template-path=/root/html2file/template.html
    linux-output-html-path=/root/html2file/html/
    linux-output-image-path=/root/html2file/image/
    linux-output-pdf-path=/root/html2file/pdf/
    linux-plugin-path=/root/html2file/plugin/linux/wkhtmltox/bin/wkhtmltopdf

一般情况下你是不可能直接成功运行的 参考链接

你可以选择将本Spring Boot项目以Jar包或者tomcat+War包的形式部署在Linux服务器中,这里介绍Jar包方式—— 参考链接

   nohup java -jar html2Pdf-2.0-SNAPSHOT.jar > log.txt & 

即能部署成功,并生成log日志文件