x-easypdf 入门-02

创建文档

// 定义文档路径
String filePath = OUTPUT_PATH + "testBuild.pdf";
// 构建文档
XEasyPdfHandler.Document.build(
        // 构建空白页
        XEasyPdfHandler.Page.build()
        //保存并关闭文档
).save(filePath).close();Copy to clipboardErrorCopied

读取文档

// 定义源文件路径
String sourcePath = OUTPUT_PATH + "testBuild.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档总页数
int totalPage = document.getTotalPage();
// 打印文档总页数
System.out.println("totalPage = " + totalPage);
// 关闭文档
document.close();Copy to clipboardErrorCopied

页面操作

// 定义文档路径
String filePath = OUTPUT_PATH + "testCRUDPage.pdf";
// 构建文档
XEasyPdfDocument document = XEasyPdfHandler.Document.build();
// 添加空白页面
document.addPage(XEasyPdfHandler.Page.build());
// 在首页插入空白页面
document.insertPage(0, XEasyPdfHandler.Page.build());
// 获取页面列表
List<XEasyPdfPage> pageList = document.getPageList();
// 获取第二页
XEasyPdfPage page = pageList.get(1);
// 获取页面宽度
float pageWidth = page.getWidth();
// 获取页面高度
float pageHeight = page.getHeight();
// 打印页面宽度与高度
System.out.println("pageWidth = " + pageWidth + ",pageHeight = " + pageHeight);
// 将第一页尺寸修改为A1
document.modifyPageSize(XEasyPdfPageRectangle.A1, 0);
// 删除第二页
document.removePage(1);
// 保存并关闭文档
document.save(filePath).close();Copy to clipboardErrorCopied

合并文档

// 定义源文档路径1
String sourcePath1 = OUTPUT_PATH + "testBuild.pdf";
// 定义源文档路径2
String sourcePath2 = OUTPUT_PATH + "testCRUDPage.pdf";
// 定义文档路径
String filePath = OUTPUT_PATH + "testMerge.pdf";
// 读取文档1
XEasyPdfDocument document1 = XEasyPdfHandler.Document.load(sourcePath1);
// 读取文档2
XEasyPdfDocument document2 = XEasyPdfHandler.Document.load(sourcePath2);
// 使用文档1合并文档2(顺序添加页面)
document1.merge(document2);
// 保存并关闭文档
document1.save(filePath).close();Copy to clipboardErrorCopied

拆分文档

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testMerge.pdf";
// 定义文档路径
String filePath = OUTPUT_PATH;
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档拆分器
XEasyPdfDocumentSplitter splitter = document.splitter();
// 拆分文档
splitter.split(filePath);
// 关闭文档
document.close();Copy to clipboardErrorCopied

表单填写

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testTemplate.pdf";
// 定义文档路径
String filePath = OUTPUT_PATH + "testFormFill.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档拆分器
XEasyPdfDocumentFormFiller formFiller = document.formFiller();
// 开启外观(将使用原有字体),非必须
formFiller.enableAppearance();
// 定义表单字典
Map<String, String> dataMap = new HashMap<>(2);
// 设置字段
dataMap.put("test1", "贵州");
// 设置字段
dataMap.put("test2", "贵阳");
// 填写表单
formFiller.fill(dataMap);
// 完成操作
formFiller.finish(filePath);Copy to clipboardErrorCopied

文档信息

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testInformation.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档信息
XEasyPdfDocumentInfo information = document.information();
// 获取标题
String title = information.getTitle();
// 打印标题
System.out.println("title = " + title);
// 关闭文档
document.close();Copy to clipboardErrorCopied

文档权限

// 定义文档路径
String filePath = OUTPUT_PATH + "testPermission.pdf";
// 构建文档
XEasyPdfDocument document = XEasyPdfHandler.Document.build(XEasyPdfHandler.Page.build());
// 获取文档权限
XEasyPdfDocumentPermission permission = document.permission();
// 设置为只读
permission.setReadOnly();
// 完成操作
permission.finish();
// 保存并关闭文档
document.save(filePath).close();Copy to clipboardErrorCopied

文档书签

// 定义文档路径
String filePath = OUTPUT_PATH + "testBookmark.pdf";
// 构建文档
XEasyPdfDocument document = XEasyPdfHandler.Document.build(XEasyPdfHandler.Page.build());
// 获取文档书签
XEasyPdfDocumentBookmark bookmark = document.bookmark();
// 第一页设置书签
bookmark.setBookMark(0, "test");
// 创建书签节点
XEasyPdfDocumentBookmark.BookmarkNode bookmarkNode = XEasyPdfDocumentBookmark.BookmarkNode.build();
// 设置目标页面
bookmarkNode.setPage(0);
// 设置标题
bookmarkNode.setTitle("test2");
// 添加子节点
bookmarkNode.addChild(
        // 创建子节点
        XEasyPdfDocumentBookmark.BookmarkNode.build().setPage(0).setTitle("test2-child")
);
// 设置书签节点
bookmark.setBookMark(bookmarkNode);
// 完成操作
bookmark.finish();
// 保存并关闭文档
document.save(filePath).close();Copy to clipboardErrorCopied

文档替换

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testTemplate.pdf";
// 定义文档路径
String filePath = OUTPUT_PATH + "testReplace.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档替换器
XEasyPdfDocumentReplacer replacer = document.replacer();
// 定义替换字典
Map<String, String> dataMap = new HashMap<>(2);
// 设置字段
dataMap.put("test1", "贵州");
// 设置字段
dataMap.put("test2", "贵阳");
// 替换文本
replacer.replaceText(dataMap);
// 完成操作
replacer.finish(filePath);Copy to clipboardErrorCopied

图像转换

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testReplace.pdf";
// 定义图像保存目录
String filePath = OUTPUT_PATH;
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档图像器
XEasyPdfDocumentImager imager = document.imager();
// 设置图像DPI
imager.setDpi(150);
// 转图像
imager.image(filePath, XEasyPdfImageType.PNG, "myImage");
// 关闭文档
document.close();Copy to clipboardErrorCopied

数字签名

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testTemplate.pdf";
// 定义文档路径
String filePath = OUTPUT_PATH + "testSign.pdf";
// 定义证书路径
String certificatePath = OUTPUT_PATH + "file.p12";
// 定义签名图片路径
String signImagePath = OUTPUT_PATH + "signImage.png";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档签名器
XEasyPdfDocumentSigner signer = document.signer();
// 设置签名信息
signer.setSignerInfo("xsx", "guiyang", "test", "xxxxxx");
// 设置签名证书
signer.setCertificate(
        XEasyPdfDocumentSigner.SignAlgorithm.MD5withRSA, 
        XEasyPdfDocumentSigner.KeyStoreType.PKCS12, 
        new File(certificatePath), 
        "123456"
);
// 设置签名图片
signer.setSignImage(XEasyPdfImageUtil.read(new File(signImagePath)), 100F, 100F, 100F);
// 创建输出流
try (OutputStream outputStream = new FileOutputStream(filePath)) {
    // 签名
    signer.sign(0, outputStream);
} catch (Exception e) {
    e.printStackTrace();
}Copy to clipboardErrorCopied

内容提取

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testReplace.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档图像器
XEasyPdfDocumentExtractor extractor = document.extractor();
// 定义待接收文本列表
List<String> dataList = new ArrayList<>(10);
// 提取文本
extractor.extractText(dataList);
// 打印文本
System.out.println("dataList = " + dataList);
// 关闭文档
document.close();Copy to clipboardErrorCopied

文档分析

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testReplace.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 获取文档分析器
XEasyPdfDocumentAnalyzer analyzer = document.analyzer();
// 分析文本(第一页和第三页)
analyzer.analyzeText(0, 2);
// 获取分析文本
List<XEasyPdfDocumentAnalyzer.TextInfo> textInfoList = analyzer.getTextInfoList();
// 打印文本
System.out.println("textInfoList = " + textInfoList);
// 关闭文档
document.close();Copy to clipboardErrorCopied

文档打印

// 定义源文档路径
String sourcePath = OUTPUT_PATH + "testReplace.pdf";
// 读取文档
XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
// 使用默认打印机打印一份文档
document.print(1);
// 关闭文档
document.close();Copy to clipboardErrorCopied

分段保存

// 定义文档路径
String filePath = OUTPUT_PATH + "testFlush.pdf";
// 定义临时目录
String tempPath = OUTPUT_PATH;
// 构建文档
XEasyPdfDocument document = XEasyPdfHandler.Document.build();
// 设置临时目录
document.setTempDir(tempPath);
// 循环100000次
for (int i = 0; i < 100000; i++) {
    // 添加页面
    document.addPage(XEasyPdfHandler.Page.build(XEasyPdfHandler.Text.build("test")));
    // 500页刷新一次(根据实际情况调整)
    if (i>0&&i%500==0) {
        // 刷新文档(缓存文件)
        document.flush();
    }
}
// 保存并关闭文档
document.save(filePath).close();Copy to clipboardErrorCopied

页码替换

// 定义文档路径
String filePath = OUTPUT_PATH + "testPagePlaceholder.pdf";
// 构建文档
XEasyPdfDocument document = XEasyPdfHandler.Document.build();
// 添加空白页面
document.addPage(
        // 构建空白页面
        XEasyPdfHandler.Page.build(), XEasyPdfHandler.Page.build()
        // 设置全局页眉
).setGlobalHeader(
        // 构建页眉
        XEasyPdfHandler.Header.build(
                // 构建文本(使用总页数占位符)
                XEasyPdfHandler.Text.build("共"+XEasyPdfHandler.Page.getTotalPagePlaceholder()+"页")
        )
        // 设置全局页脚
).setGlobalFooter(
        // 构建页脚
        XEasyPdfHandler.Footer.build(
                // 构建文本(使用当前页占位符)
                XEasyPdfHandler.Text.build("当前第"+XEasyPdfHandler.Page.getCurrentPagePlaceholder()+"页")
        )
        // 开启总页码占位符替换
).enableReplaceTotalPagePlaceholder()
        // 保存文档
        .save(filePath)
        // 关闭文档
        .close();
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。 x-easypdf特性: 1、轻量级 仅添加pdfbox相关依赖,无其他任何依赖 2、简单易用 仅需一行代码,便可完成pdf的操作 3、自动换行分页 文本超出单行显示时,即可自动换行;内容超出单页显示时,即可自动分页 4、模板填充 提供内置方法,可轻松实现模板填充 5、组件化 页面所有内容均采用组件化形式进行构建,使用不同的组件组合方式,即可构造出理想的文档 6、扩展灵活 只需实现系统提供的接口,即可完成自定义的组件扩展 x-easypdf软件架构: 1、document(文档):PDF文档 2、page(页面):若干个页面组成PDF文档 3、watermark(水印):每个页面可设置页面级别的独立水印,也可设置文档级别的全局水印,优先级为:页面级别>文档级别 4、header(页眉):每个页面可设置页面级别的独立页眉,也可设置文档级别的全局页眉,优先级为:页面级别>文档级别 5、footer(页脚):每个页面可设置页面级别的独立页脚,也可设置文档级别的全局页脚,优先级为:页面级别>文档级别 6、component(组件):核心,每个页面由若干个组件构成 text(文本组件):已提供,文本写入组件 line(线条组件):已提供,线条写入组件 image(图片组件):已提供,图片写入组件 table(表格组件):已提供,表格写入组件,cell(单元格)->row(行)->table(表格) rect(方形组件):已提供,方形写入组件 后续将添加更多其他方便实用的组件。。。 x-easypdf安装教程: mvn clean install   x-easypdf 更新日志: v2.2.0 新特性: 1、新增文档改变页面尺寸方法 2、新增文档提取器简单表格的文本内容提取(单行单列) 3、表格组件功能增强,已支持添加图片与文本,更灵活的表格定义 原有变更: 1、移除XEasyPdfUtil工具类 2、文档XEasyPdfDocument#image方法变更为imager,返回值变为XEasyPdfDocumentImager(文档图像器) 3、文档操作完毕,需手动关闭文档(调用close方法关闭) 问题修复: 1、修复字体错误问题(issue#I2BGJ1,issue#I2BGM3)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值