同步操作将从 dromara/x-easypdf 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一个用搭积木的方式构建pdf的框架(基于pdfbox)
master分支将作为稳定版本发布,develop分支将会不定期进行更新,欢迎大家提供宝贵意见,目前稳定版本 v2.4.0
x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作
https://apidoc.gitee.com/xsxgit/x-easypdf
仅添加pdfbox相关依赖,无其他任何依赖
仅需一行代码,便可完成pdf的操作
文本超出单行显示时,即可自动换行;内容超出单页显示时,即可自动分页
提供内置方法,可轻松实现模板填充
页面所有内容均采用组件化形式进行构建,使用不同的组件组合方式,即可构造出理想的文档
只需实现系统提供的接口,即可完成自定义的组件扩展
text(文本组件):已提供,文本写入组件
line(线条组件):已提供,线条写入组件
image(图片组件):已提供,图片写入组件
table(表格组件):已提供,表格写入组件,cell(单元格)->row(行)->table(表格)
rect(矩形组件):已提供,矩形写入组件
后续将添加更多其他方便实用的组件。。。
<dependency>
<groupId>wiki.xsx</groupId>
<artifactId>x-easypdf</artifactId>
<version>2.4.0</version>
</dependency>
mvn clean install
代码如下:
public class XpdfTest {
public static void main(String[] args) throws IOException {
// 定义保存路径
final String outputPath = "D:\\pdf\\my.pdf";
// 定义页眉与页脚字体颜色
Color headerAndFooterColor = new Color(10, 195, 255);
// 定义分割线颜色
Color lineColor = new Color(210, 0, 210);
// 获取背景图片
try (InputStream backgroundImageInputStream = new URL("https://i0.hdslb.com/bfs/article/1e60a08c2dfdcfcd5bab0cae4538a1a7fe8fc0f3.png").openStream()) {
// 设置背景图片
XEasyPdfHandler.Document.build().setGlobalBackgroundImage(
// 构建图片并垂直居中
XEasyPdfHandler.Image.build(backgroundImageInputStream, XEasyPdfImageType.PNG).enableVerticalCenterStyle()
// 设置全局页眉
).setGlobalHeader(
// 构建页眉
XEasyPdfHandler.Header.build(
// 构建页眉文本,并居中显示
XEasyPdfHandler.Text.build("这是粗体页眉")
// 设置水平居中
.setStyle(XEasyPdfTextStyle.CENTER)
// 设置字体大小
.setFontSize(20F)
// 设置字体颜色
.setFontColor(headerAndFooterColor)
// 使用粗体字
.setDefaultFontStyle(XEasyPdfDefaultFontStyle.BOLD)
)
// 设置全局页脚
).setGlobalFooter(
// 构建页脚
XEasyPdfHandler.Footer.build(
// 构建页脚文本,并居中显示
XEasyPdfHandler.Text.build("这是粗体页脚")
// 设置水平居中
.setStyle(XEasyPdfTextStyle.CENTER)
// 设置字体大小
.setFontSize(20F)
// 设置字体颜色
.setFontColor(headerAndFooterColor)
// 使用粗体字
.setDefaultFontStyle(XEasyPdfDefaultFontStyle.BOLD)
)
// 添加页面
).addPage(
// 构建页面
XEasyPdfHandler.Page.build(
// 构建文本
XEasyPdfHandler.Text.build(
"x-easypdf简介(细体)"
).setStyle(XEasyPdfTextStyle.CENTER)
// 设置字体大小
.setFontSize(30F)
// 设置上边距
.setMarginTop(20F)
// 使用细体字
.setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)
// 构建文本
,XEasyPdfHandler.Text.build(
"x-easypdf是一个基于PDFBOX的开源框架,"
).setFontSize(16F).setFontColor(new Color(51, 0, 153))
// 构建文本
,XEasyPdfHandler.Text.build(
"专注于PDF文件导出功能,"
).enableTextAppend().setFontSize(16F).setFontColor(new Color(102, 0, 153))
// 构建文本
,XEasyPdfHandler.Text.build(
"以组件形式进行拼接,"
).enableTextAppend().setFontSize(16F).setFontColor(new Color(153, 0, 153))
// 构建文本
,XEasyPdfHandler.Text.build(
"简单、方便,功能丰富,"
).enableTextAppend().setFontSize(16F).setFontColor(new Color(204, 0, 153))
// 构建文本
,XEasyPdfHandler.Text.build(
"欢迎大家试用并提出宝贵意见。"
).enableTextAppend().setFontSize(16F).setFontColor(new Color(255, 0, 153))
// 构建文本
,XEasyPdfHandler.Text.build(
"-- by xsx"
).setStyle(XEasyPdfTextStyle.RIGHT).setMarginTop(10F).setMarginRight(10F)
// 构建文本
,XEasyPdfHandler.Text.build(
"2021.10.10"
).setStyle(XEasyPdfTextStyle.RIGHT).setMarginTop(10F).setMarginRight(10F)
// 构建实线分割线
,XEasyPdfHandler.SplitLine.SolidLine.build().setMarginTop(10F).setColor(lineColor).setContentMode(XEasyPdfComponent.ContentMode.PREPEND)
// 构建虚线分割线
,XEasyPdfHandler.SplitLine.DottedLine.build().setLineLength(10F).setMarginTop(10F).setLineWidth(10F).setColor(lineColor).setContentMode(XEasyPdfComponent.ContentMode.PREPEND)
// 构建实线分割线
,XEasyPdfHandler.SplitLine.SolidLine.build().setMarginTop(10F).setColor(lineColor).setContentMode(XEasyPdfComponent.ContentMode.PREPEND)
)
// 保存并关闭文档
).save(outputPath).close();
}
}
}
效果如下:
请查看wiki
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。