首页 新闻 会员 周边 捐助

pdfbox按页拆分

0
悬赏园豆:100 [已解决问题] 解决于 2017-11-16 13:42

现在系统需要拆分pdf,我使用pdfbox包,进行处理。

代码如下:

        File f = new File("E:1.pdf");// 这是对应文件名
        PDDocument document = PDDocument.load(f);
        Splitter splitter = new Splitter();
        List<PDDocument> pages = splitter.split(document);
        ListIterator<PDDocument> iterator = pages.listIterator();

        int i = 1;
        while (iterator.hasNext()) {

            PDDocument pd = iterator.next();
            String fileName = "E:/test/" + i++ + ".pdf";
            File file = new File(fileName);
            if (file.exists()) {
                file.delete();
            }
            pd.save(fileName);
            pd.close();
        }
        document.close();        

已经实现将一个大pdf按页拆分为多个pdf。

但是,现在还有两个问题:

1.在拆分时,怎么实现设置页数拆分(eg:每5页拆分为一个小pdf)

2.load时,是将整个文件加载到内存中;如果文件很大,该怎么处理

登顶的主页 登顶 | 初学一级 | 园豆:52
提问于:2017-11-09 15:59
< >
分享
最佳答案
0

现在已经解决大文件加载问题:

document = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly());

不把文件加载到内存。

但是如果指定页数进行拆分,还是没有找到方法

登顶 | 初学一级 |园豆:52 | 2017-11-10 13:19

哎!问题一个回答都没有。。。

最后还是自己解决。。。。

 

指定页数拆分pdf:不使用splitter进行拆分,使用getPages,然后新建一个临时对象,往里边添加指定数量的页数

        File file = new File(fileStr);
            document = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly());
            document.getPages();
            
            
            PDDocument doc = new PDDocument();
            for (int i = startPageNum - 1; i < endPageNum; i++) {
                doc.addPage(document.getPage(i));
            }
            doc.save(outputStream);

 

登顶 | 园豆:52 (初学一级) | 2017-11-16 13:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册