内容简介:x-easypdf v2.2.0 已经发布,x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。 本次更新内容如下: 新特性: 1. 新增文档改变页面尺寸...
x-easypdf v2.2.0 已经发布,x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。
本次更新内容如下:
新特性:
1. 新增文档改变页面尺寸方法
2. 新增文档提取器简单表格的文本内容提取(单行单列)
3. 表格组件功能增强,已支持添加图片与文本,更灵活的表格定义
原有变更:
1. 移除XEasyPdfUtil工具类
2. 文档XEasyPdfDocument#image方法变更为imager,返回值变为XEasyPdfDocumentImager(文档图像器)
3. 文档操作完毕,需手动关闭文档(调用close方法关闭)
问题修复:
1. 修复字体错误问题(issue#I2BGJ1,issue#I2BGM3)
表格演示:
String filePath = OUTPUT_PATH + "testTable1.pdf";
List<XEasyPdfRow> rowList = new ArrayList<>(50);
List<XEasyPdfCell> cellList;
for (int i = 0; i < 100; i++) {
cellList = new ArrayList<>(5);
for (int j = 0; j < 5; j++) {
cellList.add(
i%2==0?
XEasyPdfHandler.Table.Row.Cell.build(100F, 15F).addContent(
XEasyPdfHandler.Text.build("row"+i+"-cell"+j+"中文")
):
XEasyPdfHandler.Table.Row.Cell.build(100F, 15F).addContent(
XEasyPdfHandler.Text.build("row"+i+"-cell"+j+"中文")
).setBackgroundColor(new Color(0,191,255))
);
}
rowList.add(XEasyPdfHandler.Table.Row.build(cellList));
}
XEasyPdfHandler.Document.build().setGlobalHeader(
XEasyPdfHandler.Header.build(
XEasyPdfHandler.Text.build("页眉页眉页眉页眉页眉页眉").setFontSize(20F).setStyle(XEasyPdfTextStyle.CENTER)
)
).addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(rowList).setStyle(XEasyPdfTableStyle.CENTER).setMarginLeft(50F).setMarginBottom(50F)
)
).setFontPath(FONT_PATH).save(filePath).close();
String filePath = OUTPUT_PATH + "testTable2.pdf";
XEasyPdfHandler.Document.build().addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("1-1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("1-2")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("1-3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("1-4")
)
).setStyle(XEasyPdfTableStyle.LEFT),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("2-1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("2-2")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("2-3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("2-4")
)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("3-1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("3-2")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("3-3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,15F).addContent(
XEasyPdfHandler.Text.build("3-4")
)
).setStyle(XEasyPdfTableStyle.RIGHT)
).setMarginLeft(100F)
)
).setFontPath(FONT_PATH).save(filePath).close();
String imagePath = "D:\\temp\\qrcode_for_gh_cefdd88ec44c_430.jpg";
String filePath = OUTPUT_PATH + "testTable3.pdf";
XEasyPdfHandler.Document.build().addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(199F,30F).addContent(
XEasyPdfHandler.Image.build(new File(imagePath)).setWidth(28F).setHeight(28F)
).setMarginLeft(99F)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,30F).addContent(
XEasyPdfHandler.Text.build("2-1")
).setMarginLeft(99F),
XEasyPdfHandler.Table.Row.Cell.build(100F,30F).addContent(
XEasyPdfHandler.Text.build("2-2")
)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,88F).addContent(
XEasyPdfHandler.Text.build("3-1").setMarginTop(-30F)
),
XEasyPdfHandler.Table.Row.Cell.build(100F,30F).addContent(
XEasyPdfHandler.Text.build("3-2")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,30F).addContent(
XEasyPdfHandler.Text.build("3-3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,88F).addContent(
XEasyPdfHandler.Text.build("3-4").setMarginTop(-30F)
)
).setHeight(30F).setStyle(XEasyPdfTableStyle.CENTER)
).setMarginLeft(100F)
)
).setFontPath(FONT_PATH).save(filePath).close();
你以为这样就完了么?其实还可以这样:
String filePath = OUTPUT_PATH + "testTable4.pdf";
XEasyPdfHandler.Document.build().addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("2")
).setMarginLeft(100F)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("4")
).setMarginLeft(100F)
).setMarginTop(100F).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("5")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("6")
).setMarginLeft(100F)
).setMarginTop(100F).setStyle(XEasyPdfTableStyle.CENTER)
).setMarginLeft(150F)
)
).setFontPath(FONT_PATH).save(filePath).close();
也可以这样:
String filePath = OUTPUT_PATH + "testTable5.pdf";
XEasyPdfHandler.Document.build().addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("2")
).setMarginLeft(100F)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(101F,100F).addContent(
XEasyPdfHandler.Text.build("5")
).setMarginLeft(99F)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("3")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("4")
).setMarginLeft(100F)
).setStyle(XEasyPdfTableStyle.CENTER)
).setMarginLeft(150F)
)
).setFontPath(FONT_PATH).save(filePath).close();
甚至是这样:
String filePath = OUTPUT_PATH + "testTable6.pdf";
XEasyPdfHandler.Document.build().addPage(
XEasyPdfHandler.Page.build(
XEasyPdfHandler.Table.build(
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("1")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("2")
).setMarginLeft(50F)
).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(101F,100F).addContent(
XEasyPdfHandler.Text.build("3")
).setMarginLeft(74F)
).setMarginTop(-50F).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("4")
),
XEasyPdfHandler.Table.Row.Cell.build(100F,100F).addContent(
XEasyPdfHandler.Text.build("5")
).setMarginLeft(50F)
).setMarginTop(-50F).setStyle(XEasyPdfTableStyle.CENTER),
XEasyPdfHandler.Table.Row.build(
XEasyPdfHandler.Table.Row.Cell.build(101F,100F).addContent(
XEasyPdfHandler.Text.build("6")
).setMarginLeft(74F)
).setMarginTop(-50F).setStyle(XEasyPdfTableStyle.CENTER)
).setMarginLeft(150F)
)
).setFontPath(FONT_PATH).save(filePath).close();
pdf也会很有趣!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ElementUI 实现表格可编辑 Editable,增删改查编辑表格Grid
- 开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件 原 荐
- html复杂表格
- PHP基础知识(表格)
- vue导出excel表格
- 如何批量采集网页表格数据?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Docker开发指南
[英] Adrian Mouat / 黄彦邦 / 人民邮电出版社 / 2017-4 / 79.00元
Docker容器轻量和可移植的特性尤其适用于动态和分布式的环境,它的兴起给软件开发流程带来了一场革命。本书对Docker进行了全面讲解,包括开发、生产以至维护的整个软件生命周期,并对其中可能出现的一些问题进行了探讨,如软件版本差异、开发环境与生产环境的差异、系统安全问题,等等。一起来看看 《Docker开发指南》 这本书的介绍吧!