java合并pdf文件
引言
下载的文档都是一个个pdf文件,每个文件都很小,所以一个个打开很麻烦,所以使用java的pdf把所有的文件合并成一个文件
java 的pdf包
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
java代码
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 java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PdfMerge {
private static void merge(List<String> fileList,String savePath) {
Document document = null;
try{
document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));
PdfCopy pdfCopy = new PdfCopy(document, new FileOutputStream(savePath));
document.open();
for(int i = 0 ; i < fileList.size(); ++i){
PdfReader pdfReader = new PdfReader(fileList.get(i));
int numberOfPages = pdfReader.getNumberOfPages();
for(int j = 1; j <= numberOfPages; ++j){
document.newPage();
PdfImportedPage importedPage = pdfCopy.getImportedPage(pdfReader, j);
pdfCopy.addPage(importedPage);
}
pdfReader.close();
}
}catch (IOException e){
e.printStackTrace();
}catch (DocumentException e){
e.printStackTrace();
}finally {
if(document != null){
document.close();
}
}
}
public static void main(String args[]) throws IOException {
String basePath = "D:\\html\\";
File file = new File(basePath);
if(file.isDirectory()){
File[] files = file.listFiles();
List<String> list = new ArrayList<>();
for(File file1 : files){
String absolutePath = file1.getAbsolutePath();
list.add(absolutePath);
}
merge(list,basePath + "all.pdf");
FileWriter fileWriter = new FileWriter(basePath + "conent.txt");
for(File file1 : files){
fileWriter.write(file1.getName());
fileWriter.write("\r\n");
}
fileWriter.close();
}
}
}