最近刚好做报表批量打印功能,所以记录一下,方便大家参考学习。废话不多说,直接上代码看效果!
代码:
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.*;
import java.io.File;
import java.io.FileOutputStream;
public class TestMain {
public static void main(String[] args) throws Exception {
//将多个pdf合并成一个
String[] files = {"E:\\合并前0.pdf", "E:\\合并前1.pdf","E:\\合并前2.pdf"};
String savepath = "E:\\合并后(竖向).pdf";
mergePdfFiles(files, savepath);
File file = new File(savepath);
System.out.println(file.getName());
}
//将多个pdf文件合并成一个
public static void mergePdfFiles(String[] files, String newfile) {
Document document = null;
try {
document = new Document(new PdfReader(files[0]).getPageSize(1));
PdfCopy copy = new PdfCopy(document, new FileOutputStream(newfile));
document.open();
for (int i = 0; i < files.length; i++) {
PdfReader reader = new PdfReader(files[i]);
int n = reader.getNumberOfPages();
for (int j = 1; j <= n; j++) {
document.newPage();
PdfImportedPage page = copy.getImportedPage(reader, j);
//横向旋转成竖向 开始
if (page.getWidth() > page.getHeight()) {
PdfDictionary pageN = reader.getPageN(j);
PdfNumber rotate = pageN.getAsNumber(PdfName.ROTATE);
if (null == rotate) {
pageN.put(PdfName.ROTATE, new PdfNumber(90));
} else {
pageN.put(PdfName.ROTATE, new PdfNumber((rotate.intValue() + 90) % 360));
}
page.setAdditional(pageN);
}
//横向旋转成竖向 结束
copy.addPage(page);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
document.close();
}
}
}
效果图: