1、背景
在项目需求中需要将角色信息打印出来,转化成pdf,常规的方法,前端就可以实现,但是当一个用户信息有几百条,几千条时怎么办?前端转化pdf依靠的是浏览器和电脑的性能,这时候就需要我们后台来处理了。
2、Itext
iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
。。。。。。。。
不多说了直接怼代码
生成一个pdf的流程
没多大用,看看熟悉熟悉生成过程,相当于io流那一套操作。
3、集成springboot
先做一个模板
先用word创建一个word文件
然后转换成pdf模板,然后将模板放到static静态文件包下,模板如下:
(1)、创建springboot项目
(2)、在pom.xml文件中添加如下依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
(3)、实体类
/**
* 专业素养竞赛成绩
*/
@Entity
@Table(name = "bt_user_pro_compt")
@Data
public class UserProCompt implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", insertable = false, nullable = false)
private Long id;
/**
* 用户ID
*/
@Column(name = "user_id", nullable = false)
private String userId;
/**
* 等级
0 无
1 A
2 B
3 C
*/
@Column(name = "degree", nullable = false)
private Integer degree;
@Column(name = "attachments", nullable = false)
private String attachments;
}
(4)、DO层操作
package com.zhitu.posreview.repository;
import com.zhitu.posreview.entity.UserOtoc;
import com.zhitu.posreview.entity.UserProCompt;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface UserProComptRepository extends JpaRepository<UserProCompt, Long>, JpaSpecificationExecutor<UserProCompt> {
List<UserProCompt> findAllByUserId(String userId);
}
(5)、service层
package com.zhitu.posreview.service;
import com.zhitu.posreview.entity.user.UserMessageList;
import javax.servlet.http.HttpServletResponse;
/**
* ProhectName posreview
* Description TODD
* Author zhengchaorui
* Data 2019/5/21 21:26
* Version 1.0
**/
public interface PdfService {
/**
* description:生成pdf(用户信息集成在一块)
* param:
* return
*/
void generatePDFFileTwo(String userId,HttpServletResponse response) throws Exception;
}
实现类