Notes: Java module to merge PDF Documents (with or without password)

import java.io.File;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.time.LocalDate;

import java.time.YearMonth;

import java.time.format.DateTimeFormatter;

import java.time.format.DateTimeFormatterBuilder;

import java.util.ArrayList;

import java.util.Collections;

import java.util.NavigableMap;

import java.util.TreeMap;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.StringUtils;

import org.apache.pdfbox.io.MemoryUsageSetting;

import org.apache.pdfbox.multipdf.PDFMergerUtility;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageFitWidthDestination;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;



 public static void mergePdfFiles(String destinationFilePath, ArrayList<String> sourceFilesPath) {

        try {

            PDFMergerUtility pdfMerger = new PDFMergerUtility();

            pdfMerger.setDestinationFileName(destinationFilePath);

            for (String sourceFile : sourceFilesPath) {

                System.out.println(sourceFile);

                pdfMerger.addSource(sourceFile);

            }

            pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());

        } catch (Exception e) {

            e.printStackTrace();

        }

    }


    public static void mergePdfFiles(String destinationFilePath, ArrayList<String> sourceFilesPath,

            String password) {

        Path tmpDir = null;

        try {

            tmpDir = Files.createTempDirectory("aaaa");

            ArrayList<String> tmpList = new ArrayList();

            for (String filePath : sourceFilesPath) {

                File file = new File(filePath);

                try ( PDDocument doc = PDDocument.load(file, password)) {

                    doc.setAllSecurityToBeRemoved(true);

                    doc.save(new File(tmpDir.toString() + "/" + file.getName()));

                    tmpList.add(tmpDir.toString() + "/" + file.getName());

                }

            }

            mergePdfFiles(destinationFilePath, tmpList);

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                FileUtils.deleteDirectory(new File(tmpDir.toString()));

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

No comments:

Post a Comment

If you have any doubts, please let me know.

Various types of salts effect on health (discussion with gemenie)

Is  rock salt or bitnoon helps in digestion or just a airuvedic nuska This is for informational purposes only. For medical advice or diagnos...