创建文档
// 定义文档路径
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();