一个用搭积木的方式构建pdf的框架(基于pdfbox)
本次更新内容如下: 新特性: 1. XEasyPdfDocumentImager文档图像器新增设置图片DPI的方法 2. XEasyPdfTable表格组件支持表格嵌套 3. XEasyPdfRow表格行新增手动分页的方法 4. XEasyPdfCell单元格新增关闭上、下、左、右边框的方法 5. XEasyPdfWatermark水印组件新增设置水印单行文本数的方法 6. XEasyPdfWatermark水印组件新增设置水印文本字符间隔的方法 7. XEasyPdfWatermark水印组件新增设置水印文本行间距的方法 8. XEasyPdfWatermark水印组件新增设置位置坐标的方法 9. 新增XEasyPdfHorizontalLayout水平布局组件,支持嵌套任意组件 10. 新增XEasyPdfVerticalLayout垂直布局组件,支持嵌套任意组件 原有变更: 无 问题修复: 1. 文本替换问题(issue#I4YVA6) 2. 使用布局组件可实现文本环绕图片的需求(issue#I4VFXH)
布局组件的简单应用:实现文字环绕图片的效果
String filePath = OUTPUT_PATH + "testLayout.pdf";
String imagePath = OUTPUT_PATH + "test.jpg";
List<String> leftList = new ArrayList<>();
List<String> rightList = new ArrayList<>();
String content = "经过实际测试,目前在访问上述提及的四款广告拦截扩展的页面时,确实是会弹出以下提示";
boolean isLeft = true;
// 拆分文本
while (content.length()>5) {
if (isLeft) {
leftList.add(content.substring(0, 5));
isLeft = false;
}else {
rightList.add(content.substring(0, 5));
isLeft = true;
}
content = content.substring(5);
}
rightList.add(content);
// 添加页面
XEasyPdfHandler.Document.build().addPage(
// 添加组件
XEasyPdfHandler.Page.build().addComponent(
// 构建垂直布局(包含三行)
XEasyPdfHandler.Layout.Vertical.build().setMarginLeft(150F).setMarginTop(200F)
// 添加布局组件(第一行)
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(300F, 20F).setComponent(
// 构建水平布局
XEasyPdfHandler.Layout.Horizontal.build()
// 添加布局组件
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(300F, 20F).setComponent(
// 设置文本组件
XEasyPdfHandler.Text.build("贵阳贵阳贵阳贵阳贵阳贵阳贵阳贵").setFontSize(20F)
)
)
)
)
// 添加布局组件(第二行)
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(100F, 100F).setComponent(
// 构建水平布局(包含三列)
XEasyPdfHandler.Layout.Horizontal.build()
// 添加布局组件
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(100F, 100F).setComponent(
// 设置文本组件
XEasyPdfHandler.Text.build(leftList).setFontSize(20F)
)
)
// 添加布局组件
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(100F, 100F).setComponent(
// 设置图片组件
XEasyPdfHandler.Image.build(new File(imagePath)).disableSelfAdaption()
)
)
// 添加布局组件
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(100F, 100F).setComponent(
// 设置文本组件
XEasyPdfHandler.Text.build(rightList).setFontSize(20F)
)
)
)
)
// 添加布局组件(第三行)
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(300F, 20F).setComponent(
// 构建水平布局
XEasyPdfHandler.Layout.Horizontal.build()
// 添加布局组件
.addLayoutComponent(
// 构建布局组件
XEasyPdfHandler.Layout.Component.build(300F, 20F).setComponent(
// 设置文本组件
XEasyPdfHandler.Text.build("贵阳贵阳贵阳贵阳贵阳贵阳贵阳贵").setFontSize(20F)
)
)
)
)
)
// 保存并关闭
).save(filePath).close();