모든 것을 이미지로 평탄화하지 않고 PDF 병합하기
제대로 된 PDF 병합은 페이지 스트림을 이어 붙여 글꼴과 벡터, 북마크를 그대로 남기고 텍스트 선택도 살려 둡니다. 모든 페이지를 이미지로 래스터화하는 것은 더 손실이 큰 다른 작업입니다.

“이 PDF 다섯 개를 병합해 달라”는 말은 두 가지 파이프라인을 뜻할 수 있습니다. 하나는 기존 페이지 객체를 하나의 파일로 이어 붙입니다. 다른 하나는 모든 페이지를 비트맵으로 인쇄하고 그 이미지를 새 PDF에 담습니다. 둘 다 첨부 파일 하나를 만듭니다. 선택 가능한 텍스트와 선명한 벡터를 지키는 것은 첫 번째뿐입니다.
구조적 병합이 하는 일
PDF123에서 PDF 병합는 각 파일의 페이지 객체를 이어 두 개 이상의 PDF를 합칩니다. 서버 경로는 빈 base와 입력에 대한 --pages로 qpdf를 돌립니다. 페이지 스트림이 스크린샷이 아니라 페이지로서 이동합니다. 임베드된 글꼴과 벡터, 기존 북마크가 그 페이지들과 함께 갑니다. 이 경로에는 페이지를 이미지로 래스터화하는 단계가 없으므로, 전자 문서로 만든 계약서도 병합 후 검색과 복사가 됩니다.
업로드 순서가 기본 출력 순서입니다. HTTP 폼은 한 요청에 반복된 fileInput 파트를 받습니다. 배치 크기는 업로드 제한에 묶일 뿐, 두 파일이라는 고정 상한은 없습니다. 선택 사항인 sortType=byFileName은 병합 전에 입력을 파일명으로 재정렬합니다. 각 원본의 북마크는 살아남을 수 있습니다. 입력에 아웃라인 트리가 없었다면 병합이 완벽한 트리를 만들어 내지는 않습니다.
파일 하나를 올리면 그 PDF를 그대로 통과시키는 무변화 처리입니다. 두 개 이상이면 선택한 순서로 입력을 이어 붙인 페이지를 가진 merged.pdf 하나가 됩니다. OpenAPI와 MCP, pdfx merge가 노출하는 것은 같은 op id이므로, 스크립트와 브라우저 클릭이 “병합”을 두고 몰래 다르게 해석하지 않습니다.
사람들이 실수로 래스터화하는 경우
일부 “합치기” 워크플로는 먼저 이미지로 내보내거나(팩스 게이트웨이, 스캔 앱, 화면 해상도로 PDF 인쇄) 병합 전에 주석을 비트맵으로 평탄화합니다. 파일 크기가 뛰고, OCR을 다시 해야 할 수 있으며, 확대하면 픽셀 경계가 보입니다.
원본이 이미 디지털 PDF라면 스트림 병합을 택하세요. 입력이 쓸 만한 텍스트가 없는 스캔일 때만 OCR을 택하고, 여기 OCR은 숨은 텍스트 레이어가 있는 재층화 PDF가 아니라 Markdown(text/markdown)을 반환한다는 점을 기억하세요. 래스터화한 뒤 OCR하는 것은 전자 문서 파일을 병합하는 것과 다른 제품 경로입니다.
페이지 이미지가 필요하다면 그것은 병합이 아니라 변환 작업입니다(PDF를 이미지로). 이 두 의도를 섞으면 “병합된” 파일이 몇 MB짜리 문서 사진첩이 됩니다. 구조적 병합 뒤의 압축은 스트림을 여전히 줄일 수 있지만(PDF 압축), 이미 구워 넣은 래스터 평탄화를 되돌리지는 못합니다.
병합이 약속하지 않는 것
병합은 페이지 크기를 정규화하지 않고, 파일 간 글꼴을 통일하지 않으며, 목차를 처음부터 다시 만들지 않습니다. 암호화된 입력을 대신 복호화하지도 않습니다. 원본이 비밀번호로 보호돼 있으면 먼저 잠금을 해제하세요. 일부 법원 포털이 기대하는 포트폴리오/패키지 컨테이너 형식을 대체하지도 않고, 평범한 다중 페이지 PDF 하나를 만듭니다.
이 한계는 브라우저를 쓰든 REST나 MCP, pdfx를 쓰든 같습니다. op는 자동화에서 출력이 예측 가능하도록 의도적으로 좁습니다. 순서가 있는 다단계 작업(병합, 그다음 워터마크, 그다음 압축)이 필요하면 두 번째 “스마트 병합” 플래그를 만들지 말고 순서 있는 steps 목록과 함께 POST /api/v1/pipeline을 쓰세요.
실행 방법
브라우저에서는 PDF 병합, 또는 반복된 fileInput 파트와 함께 POST /api/v1/general/merge-pdfs(개발자). 셸에서는:
pdfx merge a.pdf b.pdf -o merged.pdf
호스팅 또는 자체 호스팅 base로 보내려면:
pdfx --cloud --api-base "$API_BASE" --api-key "$KEY" merge a.pdf b.pdf -o merged.pdf
공개 사이트의 익명 카탈로그 호출에는 키가 필요 없습니다. 키는 안정적인 자동화 주체를 만들 때와 접근이 제한된 자체 호스팅 서버에 중요합니다. 같은 op를 curl과 MCP로도 쓰는 방법은 같은 연산, 네 개의 클라이언트를 보세요.