java实现合并目录下所有pdf文件

java实现合并目录下所有pdf文件

我们使用PDFBox工具来实现

加入依赖:

<!-- PDFBox -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.28</version>
</dependency>

 

首先我们需要一个方法去找出该目录下的所有pdf

public static List<File> listPDFFiles(String directoryPath) {
    List<File> pdfFiles = new ArrayList<>();

    File directory = new File(directoryPath);
    File[] files = directory.listFiles();

    if (files != null) {
        for (File file : files) {
            if (file.isFile() && file.getName().toLowerCase().endsWith(".pdf")) {
                pdfFiles.add(file);
            }
        }
    } else {
        System.out.println("Directory not found: " + directoryPath);
    }

    return pdfFiles;
}

 

真正逻辑在MergeFile方法

public static File MergeFile(List<File> files, String targetPath) throws IOException {

    PDFMergerUtility mergePdf = new PDFMergerUtility();
    for (File file : files) {
        if (file.exists() && file.isFile()) {
            mergePdf.addSource(file);
        }
    }
    // 设置名称
    mergePdf.setDestinationFileName(targetPath);
    // 合并pdf
    mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
    return new File(targetPath);
}

首先PDFMergerUtility mergePdf = new PDFMergerUtility();
创建一个 PDFMergerUtility 对象,这是 Apache PDFBox 提供的用于合并PDF文件的实用工具类。mergePdf.setDestinationFileName(targetPath);
设置合并后生成的PDF文件的路径和名称为 targetPath。
mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
执行PDF文件的合并操作。
MemoryUsageSetting.setupMainMemoryOnly() 设置内存使用设置为主内存,这意味着合并操作将尽量使用主内存来执行。

然后main方法调用即可:

public static void main(String[] args) throws IOException {
    List<File> files = new ArrayList<File>();
    String directoryPath = "E:\\Baidu\\";
    String pdf = directoryPath + "merged.pdf";
    List<File> pdfFiles = listPDFFiles(directoryPath);
    for (File pdfFile : pdfFiles) {
        files.add(pdfFile);
    }
    File f = MergeFile(files, pdf);
    System.out.println(f.length());
}

 

全部代码如下:

package com.dreams;

import org.apache.pdfbox.io.MemoryUsageSetting;
import org.apache.pdfbox.multipdf.PDFMergerUtility;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MergePdfFile {
    public static File MergeFile(List<File> files, String targetPath) throws IOException {

        PDFMergerUtility mergePdf = new PDFMergerUtility();
        for (File file : files) {
            if (file.exists() && file.isFile()) {
                mergePdf.addSource(file);
            }
        }
        // 设置名称
        mergePdf.setDestinationFileName(targetPath);
        // 合并pdf
        mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
        return new File(targetPath);
    }

    public static List<File> listPDFFiles(String directoryPath) {
        List<File> pdfFiles = new ArrayList<>();

        File directory = new File(directoryPath);
        File[] files = directory.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isFile() && file.getName().toLowerCase().endsWith(".pdf")) {
                    pdfFiles.add(file);
                }
            }
        } else {
            System.out.println("Directory not found: " + directoryPath);
        }

        return pdfFiles;
    }

    public static void main(String[] args) throws IOException {
        List<File> files = new ArrayList<File>();
        String directoryPath = "E:\\Baidu\\";
        String pdf = directoryPath + "merged.pdf";
        List<File> pdfFiles = listPDFFiles(directoryPath);
        for (File pdfFile : pdfFiles) {
            files.add(pdfFile);
        }
        File f = MergeFile(files, pdf);
        System.out.println(f.length());
    }
}

 

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇