在进行开发的时候,需要在每个页面进行盖章
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import uk.ltd.getahead.dwr.util.Logger;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
public class PdfOperateUtil {
private static Logger log = Logger.getLogger(PdfOperateUtil.class);
public static void main(String[] args) throws Exception {
List<String> list = splitPdfFile("D:\\report\\GISS\\20150708113914663_LIST_133.pdf");
for(String fileName : list){
System.out.println(fileName);
}
//合并
mergePdfFiles(list,"D:\\report\\GISS\\20150708113914663_LIST_gaoweigang.pdf");
}
/**
* PDF合并
* @param files
* @param savepath
*/
public static void mergePdfFiles(List<String> files, String savepath) {
try {
Document document = new Document(new PdfReader(files.get(0)).getPageSize(1));
PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
document.open();
for (int i = 0; i < files.size(); i++) {
PdfReader reader = new PdfReader(files.get(i));
int n = reader.getNumberOfPages();
for (int j = 1; j <= n; j++) {
document.newPage();
PdfImportedPage page = copy.getImportedPage(reader, j);
copy.addPage(page);
}
}
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* PDF拆分
* @param filepath
*/
public static List<String> splitPdfFile(String filepath) throws Exception{
log.info("进入splitPdfFile方法");
List<String> fileFullNameList = new ArrayList<String>();//存放拆分之后的文件全路径
Document document = null;
PdfCopy copy = null;
try {
PdfReader reader = new PdfReader(filepath);
int n = reader.getNumberOfPages();//获取源PDF共有多少页
if (n == 1) {//如果只有一页
fileFullNameList.add(filepath);
return fileFullNameList;
}
//如果有多页PDF
String remotePath = filepath.substring(0,filepath.lastIndexOf("\\") + 1);//临时文件
log.info("remote path:"+remotePath);
String splitfilename = null;//文件名
String splitfilefullname = null;//文件全路径
for (int i = 1; i <= n; i++) {
splitfilename = filepath.substring(
filepath.lastIndexOf("\\") + 1,filepath.length() - 4);
splitfilefullname = remotePath + splitfilename + "_" + i + ".pdf";
fileFullNameList.add(splitfilefullname);
}
for (int i = 0; i < n; i++) {
//创建一个新的文档,文档大小与reader相同
document = new Document(reader.getPageSize(1));
copy = new PdfCopy(document, new FileOutputStream(
fileFullNameList.get(i)));
document.open();
document.newPage();
//从输入流 中抓取 指定页面
PdfImportedPage page = copy.getImportedPage(reader, i+1);
//将 指定页面 复制到 输出流
copy.addPage(page);
document.close();
}
log.info("拆分成:"+fileFullNameList.size()+"页");
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
log.info("退出splitPdfFile方法");
return fileFullNameList;
}
}