【Java】职场软技能,分割提取pdf文件,从此告别WPS会员

需求:

需要华南、华东、西南区三个文件夹中的 7-12 页的报表信息
样例:
【Java】职场软技能,分割提取pdf文件,从此告别WPS会员_第1张图片

jar包

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itextpdf</artifactId>
      <version>5.5.13</version>
    </dependency>

代码样例

package org.example;


import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;

import javax.imageio.IIOException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @Author: Stephen
 * @Date: 2020/7/29 15:32
 * @Version: 1.0
 * @Content:
 */
public class PdfFile {
     
    public static void main(String[] args) {
     
        String path = "C:\\Users\\USER\\Desktop\\demo\\xinan";
        File[] array = getFile(path);
        for (int i = 0; i < array.length; i++) {
     
            if (array[i].isFile()) {
     
                String respdfFile = array[i].toString();
                String savepath = "C:\\Users\\USER\\Desktop\\西南\\"+array[i].getName()+".pdf";
                int from = 7;
                int end = 12;
                splitPDFFile(respdfFile, savepath, from, end);
            }
        }

    }

    /**
     * 提取文件夹中的文件
     * @param path 文件夹路径
     * @return
     */
    public static File[] getFile(String path) {
     
        // get file list where the path has
        File file = new File(path);
        // get the folder list
        File[] array = file.listFiles();
        return array;
    }


    /**
     * 截取pdfFile的第from页至第end页,组成一个新的文件名
     * @param respdfFile   需要分割的PDF路径
     * @param savepath  新PDF路径
     * @param from  起始页
     * @param end  结束页
     */
    public static void splitPDFFile(String respdfFile, String savepath, int from, int end) {
     
        Document document = null;
        PdfCopy copy = null;
        try {
     
            PdfReader reader = new PdfReader(respdfFile);
            int n = reader.getNumberOfPages();
            if(end==0){
     
                end = n;
            }
            ArrayList<String> savepaths = new ArrayList<String>();
            String staticpath = respdfFile.substring(0, respdfFile.lastIndexOf("\\")+1);
            //String savepath = staticpath+ newFile;
            savepaths.add(savepath);
            document = new Document(reader.getPageSize(1));
            copy = new PdfCopy(document, new FileOutputStream(savepaths.get(0)));
            document.open();
            for(int j=from; j<=end; j++) {
     
                document.newPage();
                PdfImportedPage page = copy.getImportedPage(reader, j);
                copy.addPage(page);
            }
            document.close();

        } catch (IIOException e) {
     
            e.printStackTrace();
        } catch(DocumentException e) {
     
            e.printStackTrace();
        } catch (FileNotFoundException e) {
     
            e.printStackTrace();
        } catch (IOException e) {
     
            e.printStackTrace();
        }
    }


}

你可能感兴趣的:(Java,java)