PDF 병합
여러 PDF를 넘긴 순서대로 하나로 이어 붙입니다. 문서 모델과 무관한 정적 도구입니다. 서명 전 문서에 사용합니다.
1.사용 (Java)
JAVAMerger.merge
import kr.co.inogard.coredocs.pdf.tools.Merger;
// 목록의 첫 PDF가 앞, 나머지가 순서대로 뒤에 붙음
List<byte[]> pdfList = Arrays.asList(계약서Bytes, 첨부1Bytes, 첨부2Bytes);
Merger.merge(pdfList, outputPath);2.동작 특성
| 항목 | 내용 |
|---|---|
| 순서 | 목록 순서 그대로 병합 (첫 번째=앞) |
| 문서 모델 | 첫 PDF에 필드, 문서 모델이 있으면 그대로 보존 (뒤에 붙으므로 페이지 번호 유지) |
| 저장 | 임시 파일에 쓴 뒤 원자 교체, 실패해도 기존 파일 보존 |
| 리소스 | 글꼴, 이미지 등은 병합 시 자동 복사 |
| 무엇을 병합할지 | 호출자가 목록으로 결정 (업로드끼리만, 특정 문서를 맨 앞에 등) |
3.엔드포인트 구성 예
JAVA업로드한 PDF들을 병합하는 엔드포인트
@PostMapping("/document/merge")
public Document merge(
@RequestPart("pdfFileList") MultipartFile[] pdfFileList,
@RequestParam("outputFileName") String outputFileName) throws IOException {
List<byte[]> pdfList = new ArrayList<>();
for (MultipartFile pdfFile : pdfFileList) {
pdfList.add(pdfFile.getBytes());
}
Merger.merge(pdfList, pdfPath.resolve(outputFileName));
return Document.loadFromPDF(pdfPath.resolve(outputFileName), cachePath.resolve(outputFileName));
}• 주의
전자서명이 완료된 문서를 병합하면 서명이 깨집니다(전체 재저장 방식). 병합은 서명 전 단계에서 사용하십시오. 또한 같은 출력 경로로 동시에 병합하면 임시 파일이 충돌할 수 있으므로 출력 파일명은 호출자가 고유하게 정해야 합니다.