您的位置:首页 > 其它

使用pdfBox合并pdf解决两种情况:

2016-12-15 10:56 399 查看
1 两个pdf合并成一个pdf

public static void main(String[] args) throws IOException,

DocumentException {

PdfReader reader1 = new PdfReader(“H:/abcd/PDF1.pdf”);

PdfReader reader2 = new PdfReader(“H:/abcd/PDF2.pdf”);

FileOutputStream out = new FileOutputStream("H:/abcd/PDF4.pdf");

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, out);

document.open();
PdfContentByte cb = writer.getDirectContent();

int totalPages = 0;
totalPages += reader1.getNumberOfPages();
totalPages += reader2.getNumberOfPages();

List<PdfReader> readers = new ArrayList<PdfReader>();
readers.add(reader1);
readers.add(reader2);

int pageOfCurrentReaderPDF = 0;
Iterator<PdfReader> iteratorPDFReader = readers.iterator();

while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();

while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
document.newPage();
pageOfCurrentReaderPDF++;
PdfImportedPage page = writer.getImportedPage(pdfReader,
pageOfCurrentReaderPDF);
cb.addTemplate(page, 0, 0);
}
pageOfCurrentReaderPDF = 0;
}
out.flush();
document.close();
out.close();
}


2 两个PDF各自其中的一页合并为一个PDF中的一页(合成两页PDF的内容不超过一页)

public static final String file1 = “H:/abcd/PDF1.pdf”;

public static final String file2 = “H:/abcd/PDF2.pdf”;

public static void main(String[] args) throws IOException {
combine2();
}

public static void combine2() {
try {
PDDocument _document1 = PDDocument.load(new File(file1));
PDPage _page1 = _document1.getPage(0);
PDRectangle _cropBox1 = _page1.getCropBox();

float originalHeight = _cropBox1.getHeight();

_cropBox1.setLowerLeftY(-(PDRectangle.A4.getHeight() - _cropBox1
.getHeight()));
_page1.setMediaBox(_cropBox1);
_page1.setCropBox(_cropBox1);

ByteArrayOutputStream _baos1 = new ByteArrayOutputStream();
_document1.save(_baos1);
_document1.close();

PDDocument _document2 = PDDocument.load(new File(file2));
PDPage _page2 = _document2.getPage(0);
PDRectangle _cropBox2 = _page2.getCropBox();

_cropBox2.setLowerLeftY(-(PDRectangle.A4.getHeight()
- _cropBox2.getHeight() + originalHeight + 20));
_page2.setMediaBox(_cropBox2);
_page2.setCropBox(_cropBox2);

ByteArrayOutputStream _baos2 = new ByteArrayOutputStream();
_document2.save(_baos2);
_document2.close();

PDFMergerUtility mergePdf = new PDFMergerUtility();
mergePdf.addSource(new ByteArrayInputStream(_baos1.toByteArray()));
mergePdf.addSource(new ByteArrayInputStream(_baos2.toByteArray()));

Overlay overLay = new Overlay();
overLay.setInputPDF(PDDocument.load(_baos1.toByteArray()));
overLay.setDefaultOverlayPDF(PDDocument.load(_baos2.toByteArray()));
Map<Integer, String> specificPageOverlayFile = new HashMap<Integer, String>();
PDDocument _doc = overLay.overlay(specificPageOverlayFile);

PDPageXYZDestination dest2 = new PDPageXYZDestination();
dest2.setPage(_doc.getPage(0));
dest2.setZoom(1f);
dest2.setTop(new Float(PDRectangle.A4.getHeight()).intValue());
PDActionGoTo action2 = new PDActionGoTo();
action2.setDestination(dest2);
_doc.getDocumentCatalog().setOpenAction(action2);

_doc.save("H:/abcd/PDF10.pdf");
} catch (Exception e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pdfbox 合并 pdf
相关文章推荐