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

spring boot java使用XEasyPdf生成pdf文档

java使用XEasyPdf生成pdf文档

  • spring boot java使用XEasyPdf生成pdf文档
    • 第一步导入maven坐标,pom.xml全部贴上
    • 第二步编写代码
    • 代码实战:

spring boot java使用XEasyPdf生成pdf文档

第一步导入maven坐标,pom.xml全部贴上

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.13</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>pdfDemo</artifactId><version>0.0.1-SNAPSHOT</version><name>pdfDemo</name><description>pdfDemo</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 引入pdf 依赖 底层是org.apache.pdfbox--><dependency><groupId>org.dromara.x-easypdf</groupId><artifactId>x-easypdf-pdfbox</artifactId><version>2.12.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

第二步编写代码

package com.example.pdfdemo;import org.dromara.pdf.pdfbox.component.barcode.XEasyPdfBarCode;
import org.dromara.pdf.pdfbox.component.image.XEasyPdfImageType;
import org.dromara.pdf.pdfbox.doc.XEasyPdfDefaultFontStyle;
import org.dromara.pdf.pdfbox.doc.XEasyPdfPositionStyle;
import org.dromara.pdf.pdfbox.handler.XEasyPdfHandler;
import org.dromara.pdf.pdfbox.mark.XEasyPdfDefaultWatermark;import java.awt.*;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** 描述:TestPdf** @date:2023/7/1517:35:45 星期六* @author:linjianhui* @package:com.example.pdfdemo*/
public class TestPdf {public static void main(String[] args) throws IOException {List<String> list = new ArrayList<>();for (int i = 1; i <= 100; i++) {list.add("我是小孩也是王" + i);}// 定义pdf输出路径//  String outputPath = "E:\\pdf\\test.pdf";String outputPath ="E:\\pdf\\test.pdf";
//
// 构建文档XEasyPdfHandler.Document.build().setGlobalWatermark(new XEasyPdfDefaultWatermark("土豪辉")).addPage(// 构建页面XEasyPdfHandler.Page.build(// 构建组件XEasyPdfHandler.BarCode.build(XEasyPdfBarCode.CodeType.QR_CODE, "xxx"),//通过图片url地址写入图片XEasyPdfHandler.Image.build(new URL("https://pics5.baidu.com/feed/c2cec3fdfc03924551e10f01283418c97c1e2590.jpeg").openStream(), XEasyPdfImageType.PNG),//写入文本并设置颜色,水平居中,加粗XEasyPdfHandler.Text.build("我是小孩也是王").setFontColor(new Color(255, 182, 193)).setHorizontalStyle(XEasyPdfPositionStyle.CENTER).setDefaultFontStyle(XEasyPdfDefaultFontStyle.BOLD),XEasyPdfHandler.Text.build("xxx通知书").setHorizontalStyle(XEasyPdfPositionStyle.CENTER).setDefaultFontStyle(XEasyPdfDefaultFontStyle.BOLD),//写入空行XEasyPdfHandler.Text.build(Arrays.asList("")),//写入文本列表,并设置左边距为200XEasyPdfHandler.Text.build(list).setMarginLeft(200f))
// 保存文档到指定路径,并关闭).save(outputPath).close();//将文档上传到文件服务器// 将pdf 写入ByteArrayOutputStream ,byte[] bytes = outputStream.toByteArray(); new ByteArrayInputStream(bytes)构造输入流//            //上传到obs服务器,obs上传完后会将流给关闭//            obsClient.putObject(bucketName, newFileName, new ByteArrayInputStream(bytes));//拿到了这个之后,怎么上传到obs服务器//通过feign调用传递byte[] 获取上传的文件url 后写入数据库}
}

代码实战:

public String createPDF(){List<XEasyPdfComponent> list = new ArrayList<>();list.add(XEasyPdfHandler.Text.build("xxx通知书").setHorizontalStyle(XEasyPdfPositionStyle.CENTER).setDefaultFontStyle(XEasyPdfDefaultFontStyle.BOLD));//写入一行空行list.add(XEasyPdfHandler.Text.build(Arrays.asList("")));float marginLeft = 200f;String resultUrl = "";//生成pdf关键操作//使用try-with-resource自动关闭资源try (XEasyPdfDocument pdfDocument = XEasyPdfHandler.Document.build().addPage(XEasyPdfHandler.Page.build(list));ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {//将数据保存到流中pdfDocument.save(outputStream);byte[] bytes = outputStream.toByteArray();//inputStream = new ByteArrayInputStream(bytes);//todo //通过feign调用传递inputStream到file服务, 获取上传的文件url后写入数据库String pdfUrl = fileService.uploadStream(bytes);//拿到url后,后写入数据库resultUrl = Optional.ofNullable(pdfUrl).orElse("");//插入数据库 todo return resultUrl;} catch (Exception e) {log.error("生成xxx通知书pdf抛出异常", e);}}
http://www.lryc.cn/news/111144.html

相关文章:

  • 自定义elementui的主题
  • eNSP interface g0/0/0 报错解决办法
  • Metric3D:Towards Zero-shot Metric 3D Prediction from A Single Image
  • k8s ingress获取客户端客户端真实IP
  • Mysql主从搭建 基于DOCKER
  • Leaflet入门,地图平移跳转到指定位置和飞行到指定位置效果
  • iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄
  • Java 实现 SCP 携带密码拷贝文件
  • Flink CEP(三)pattern动态更新
  • 抽象工厂模式(C++)
  • 程序员面试金典17.*
  • 【瑞吉外卖项目复写】基本部分复写笔记
  • 用html+javascript打造公文一键排版系统15:一键删除所有空格
  • 苍穹外卖day12(完结撒花)——工作台+Spring_Apche_POI+导出运营数据Excel报表
  • SQL与NoSQL概念(详细介绍!!)
  • node debian 镜像 new Date 获取时间少 8 小时问题
  • 【N32L40X】学习笔记13-软件IIC读写EEPROM AT24C02
  • JVM 调优
  • DP-GAN剩余代码
  • 在word的文本框内使用Endnote引用文献,如何保证引文编号按照上下文排序
  • SpringBoot项目上传至服务器
  • C++中实现多线程的三种方式
  • 程序员副业指南:怎样实现年入10w+的目标?
  • excel 计算 分位值
  • mongodb-windows-x86_64-4.4.23-signed.msi
  • 一个SpringBoot 项目能处理多少请求?
  • Shell编程基础(十)读取多行文本到数组 写入多行文本到文件
  • MyBatis学习笔记2
  • spring总结
  • 记录--说一说css的font-size: 0