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();
}
}
}
Comments
Post a Comment
If you have any doubts, please let me know.