PDF 병합

패키지: kr.co.inogard.coredocs.pdf.tools.Merger

여러 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));
}
• 주의

전자서명이 완료된 문서를 병합하면 서명이 깨집니다(전체 재저장 방식). 병합은 서명 전 단계에서 사용하십시오. 또한 같은 출력 경로로 동시에 병합하면 임시 파일이 충돌할 수 있으므로 출력 파일명은 호출자가 고유하게 정해야 합니다.