银行对账单PDF一页拆分多页
2024-09-26 05:59:56
- 一个页拆分多个页,按照流水
String bank = "{\n" +
"\t\"bank\" : [\n" +
"\t\t{\n" +
"\t\t\t\"name\" : \"中国农业银行\",\n" +
"\t\t\t\"tableWidth\" : 279,\n" +
"\t\t\t\"split\" : 3\n" +
"\t\t},\n" +
"\t\t{\n" +
"\t\t\t\"name\" : \"中国银行\",\n" +
"\t\t\t\"tableWidth\" : 420,\n" +
"\t\t\t\"split\" : 2\n" +
"\t\t},\n" +
"\t\t{\n" +
"\t\t\t\"name\" : \"中国工商银行\",\n" +
"\t\t\t\"tableWidth\" : 414,\n" +
"\t\t\t\"split\" : 2\n" +
"\t\t}\n" +
"\t]\n" +
"}\n";
JSONObject jsonObject = JSONObject.parseObject(bank);
List<JSONObject> jsonObjectList = (List<JSONObject>) JSONPath.read(bank, "$bank[?(@.name='中国工商银行')]");
String filename = jsonObjectList.get(0).getString("name");
Integer tableWidth = jsonObjectList.get(0).getInteger("tableWidth");
Integer split = jsonObjectList.get(0).getInteger("split");
try (InputStream resource = new FileInputStream(new File("c:\\" + filename + ".pdf"));
OutputStream result = new FileOutputStream(new File("c:\\" + filename + "-split.pdf"))) {
Abstract2DPdfPageSplittingTool tool = new Abstract2DPdfPageSplittingTool() {
@Override
protected Iterable<Rectangle> determineSplitRectangles(PdfReader reader, int page) {
Rectangle targetSize = PageSize.A4;
List<Rectangle> rectangles = new ArrayList<>();
float pageHeight = targetSize.getHeight();
float pageWidth = targetSize.getWidth();
for (int i = 0; i < split; i++) {
rectangles.add(new Rectangle(0, pageHeight, pageWidth, pageHeight - tableWidth));
pageHeight = pageHeight - tableWidth;
}
return rectangles;
}
};
tool.split(result, new PdfReader(resource));
}
最新文章
- iOS创建自定义的xib视图,不带控制器调用
- MVVM ObservableCollection<;>; ListView
- 软件测试第三次作业——7.使用下面方法printPrimes()完成后面的问题(a)~(f)
- Hibernate <;一级缓存>;
- jsnop
- [转]Java多线程干货系列—(一)Java多线程基础
- jquery】常用的jquery获取表单对象的属性与值
- Swift Json 解析错误
- nginx支持url的PATHINFO
- CentOS 7.0 systemd代替service
- ibatis 学习笔记 3 - pfpfpfpfpf的专栏 - 博客频道 - CSDN.NET
- Vue子组件与父组件之间的通信
- Oracle SQL 部分特殊字符转义及escape的用法
- 通过jpa getResultList 获取查询到的内容
- Spring Batch JSON 支持
- get与load方法
- PLSQL Developer 客户端没有TNS监听,无法连接数据库
- htmlDOM树
- nodejs系列笔记02---模块路径解析
- 如何将Virtualbox和VMware虚拟机相互转换[译文211] - 转
热门文章
- 此平台不支持虚拟化的 Intel VT-x/EPT。不使用虚拟化的 Intel VT-x/EPT,是否继续?
- CF1534F2 Falling Sand (Hard Version)
- Windows Server 2012 R2安装.NET Framework4.7.1
- Joseph Problem With Passwords In Java
- python+requests 验证码登录
- JS根据分数,计算名次(分数相同名次相同)
- Swift中 堆(heap)和栈(stack)的区别
- python 发送 application/x-www-form-urlencoded 类型的数据包
- CSS3-3D导航(transform:rotate)
- uniapp使用rich-text内容过长在真机无法滚动