首页 > 其他分享 >银行对账单PDF一页拆分多页

银行对账单PDF一页拆分多页

时间:2022-08-26 18:24:37浏览次数:51  
标签:账单 pageHeight tableWidth name split new PDF bank 多页

  • 一个页拆分多个页,按照流水
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));
}

标签:账单,pageHeight,tableWidth,name,split,new,PDF,bank,多页
From: https://www.cnblogs.com/masg/p/16628550.html

相关文章

  • golang html转pdf
    url:=""res,err:=http.Get(url)iferr!=nil{fmt.Fprintf(os.Stderr,"fetch:%v",err)os.Exit(1)}//读取资源数据body:[]bytebody,err:=iou......
  • 批量提取pdf内的特定数据
    批量提取pdf内的特定数据需求介绍实习的时候需要提取大量pdf内的日期,本身只是一个劳动力较大的工作,但是不想浪费太多时间,所以写了个程序直接呈现出来,节约时间。需要注意......
  • 数据结构与算法分析--C语言描述 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1BGsOOAOqXE9j509OFtkjXA点击这里获取提取码书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能......
  • 网络是怎样连接的 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1OiVBwYKoRi2uJ4-mYf69mw点击这里获取提取码本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止......
  • 图解tcpip(第5版) pdf
    高清扫描版下载链接:https://pan.baidu.com/s/16Owjujj9v7AHYp408FHgKg点击这里获取提取码这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握......
  • 数据结构与算法分析 Java版 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1vDsOy1E0kHizahB6hIg2tA点击这里获取提取码本书以Java语言为基础,讨论了数据结构的线性结构和非线性结构及其实现,全书以Java......
  • 《零起点Python机器学习快速入门》PDF高清版下载
    《零起点Python机器学习快速入门》PDF高清版下载地址  内容简介  · · · · · ·《零起点Python机器学习快速入门》采用独创的黑箱模式,MBA案例教学机......
  • 深入理解计算机系统 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/11HBPtpCdG9zg3scgB_dBTw点击这里获取提取码对于计算机系统的分析已经很明了,可是人们是否真正清晰地理解?有本经典的图书描......
  • 大话数据结构 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1RTuby7IkSORmZ1dEbbb80A点击这里获取提取码本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机......
  • 计算机是怎样跑起来的 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1TSpJ_xuST5rBWkEl_oPiHw点击这里获取提取码本书倡导在计算机迅速发展、技术不断革新的今天,回归到计算机的基础知识上。通过......