生成pdf工具类_PDF生成的另一种方式

最近在工作中遇到了java生成PDF的需求,当时脑子灵光一闪itext啊。然后从github搜索了一下开源项目开始实现。我是用itext+freemarker结合实现的,但是到了测试阶段发现这种方式对一些样式不支持,无奈转用另一种方式:wkhtmltopdf。wkhtmltopdf简介:工具全名叫 "wkhtmltopdf" ; 是一个使用 Qt WebKit 引擎做渲染的,能够把html 文档转换成 pdf 文档 或 图片(image) 的命令行工具。(强调一下:是 “命令行工具” )支持多个平台,可在win,linux,os x 等系统下运行。使用wk实现生成pdf大体思路:构建一个html模板(建议使用spring thymeleaf);构建调用wk生成命令(具体命令大家可以从官网看下),命令中有两个重要参数:1).请求html模板地址,2).生成的pdf文件存储位置;3.通过java调用wkhtmltopdf命令生成;这里我为了大家好理解单独写了一个项目讲解:https://gitee.com/rain_zhx/pdf-contract-demo.git,现在通过项目开始讲解整个生成过程。项目使用技术栈:spring cloud + spring boot + thymeleaf + 阿里oss +redis。项目结构:整个项目使用maven聚合。pdf-server是eureka-server可以理解为注册中心;pdf-client是调用端可以理解为eureka的客户端;pdf-manager是提供者提供pdf生成的接口;项目配置修改以及启动顺序:修改pdf-manage的config下dev配置文件,包括redis和properties中oss配置(项目是使用了生产栈测试栈分离配置文件方式);修改完成后首先启动pdf-server;启动pdf-client;启动pdf-manage;注意全程只修改pdf-manage项目中的配置文件即可,其他两个服务不需要动哦。

440700e8989541a928d28f91756461bc.png

5f17a3a941ab090f6b074345f436dda1.png

d048f8147d310892394b1d0e14e47bc9.png

项目思路分析:pdf-manage作为pdf生成服务中心设计,公司所有和pdf相关的业务都可以写在此服务中。pdf-client和pdf-server只是我为了大家测试方便所以继承到项目中。我把生成pdf公共的操作抽象出来,需要通过业务自定义的业务抽象到AbstractPDFDataProcessor抽象类中,然后使用了模板设计模式,不同的业务有不同的实现类但是都继承上述抽象类。嗯,说再多也没有用这种设计之美还是需要大家通过代码去体会哦,多阅读代码。大家在阅读代码有哪里不解的或者启动项目有问题的欢迎加群978219630
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值