x-easypdf v2.7.4 版本发布,新增布局组件
一个用搭积木的方式构建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();