2016-06-02 6 views
3

Apache의 PdfBox를 사용하여 두 개의 pdf 파일을 병합해야합니다. 나는 이렇게하기 위하여 육체 pdf 파일을 가지고 갔다.PDFBox를 사용하여 PDF 파일 병합

PDFMergerUtility ut = new PDFMergerUtility(); 
ut.addSource(path1); 
ut.addSource(path2); 
ut.setDestinationFileName(path3); 
ut.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly()); 

파일이 완벽하게 통합하지만 다음과 같이 몇 가지 제약이있다 : 다음은 코드입니다

  1. 내가 코드 자체에서 첫번째 파일을 생성하고, 그래서 PDDocument 개체입니다.
  2. 첫 번째 파일과 병합해야하는 파일은 바이트 배열 형식입니다.
  3. 병합 된 파일을 저장할 필요가 없지만이를 바이트 배열로 변환해야합니다.

이 요구 사항을 달성하는 데 도움을주십시오.

답변

3

병합 대신 PDFMergerUtility.appendDocument(PDDocument destination, PDDocument source)으로 전화하십시오. 바이트 배열에서로드하려면 PDDocument.load(array)으로 호출하십시오.

btw : 내가 직접 만든 PDDocument 개체를 병합하지 않으려 고합니다. 글꼴 하위 집합이있는 경우 실패합니다 (문제 PDFBOX-3243 참조). 더 잘 저장하고 (예 : ByteArrayOutputStream) 다시로드 한 다음 병합합니다. ByteArrayOutputStream에서 바이트 배열을 가져 오려면 ByteArrayOutputStream.tobytearray()을 사용하십시오.

+0

'ByteArrayOutputStream' 접근법의 예제가 있습니까? 두 개의 문서를 두 개의 스트림으로 저장하고 배열을 결합하여 결합 된 바이트를 새 문서로 다시로드하려고했습니다. 그러나, 그것은 작동하지 않았다. – Trinimon

+1

'ByteArrayOutputStream baos = new ByteArrayOutputStream(); doc.save (baos); doc.close(); doc = PDDocument.load (baos.toByteArray()); ' –

+0

자손 만든'PDDocument '를 저장하고 다시로드해야한다는 의미였습니까? ... 그리고 당신의 의견은'ByteArrayOutputStream'을 결합하여 문서를 병합하는 것에 관한 것이 아닙니다. 권리? – Trinimon

관련 문제