内容简介: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表格
- 如何批量采集网页表格数据?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms on Strings, Trees and Sequences
Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99
String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!