x-easypdf v2.2.0 正式版发布,表格增强

来源: 投稿
作者: oXSXo
2021-01-04

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也会很有趣!

展开阅读全文
21 收藏
分享
加载中
精彩评论
感谢作者大大,我们最近还发现生成pdf多页显示问题。晚点还得提一个issue
2021-01-04 10:18
1
举报
最新评论 (4)
牛🐮皮。服了
2021-01-04 12:08
0
回复
举报
请多多支持
2021-01-04 12:10
0
回复
举报
感谢作者大大,我们最近还发现生成pdf多页显示问题。晚点还得提一个issue
2021-01-04 10:18
1
回复
举报
欢迎反馈问题
2021-01-04 12:10
0
回复
举报
更多评论
4 评论
21 收藏
分享
返回顶部
顶部