본문 바로가기
ERROR

iText "PDF 문서를 로드하지 못했습니다." 오류 해결 기록

by RES0612 2025. 9. 8.

 

Spring에서 iText라이브러리를 사용해 PDF를 만들어서 잘 사용하고 있다가

갑자기 특정 상황에서 오류가 발생하기 시작했다.

 

증상

  • PDF 페이지를 여러 장 합쳐서 출력하는 상황 특정 데이터에서만 오류가 발생
  • 해당 페이지만 단독으로 뽑으면 정상 동작
  • 문제의 페이지만 포함해서 5개 정도 뽑으면 정상 동작
  • 20개 이상 같이 뽑으면 오류 발생
  • 브라우저에서 처음에 페이지가 보였다가, 잠시 뒤 XㅡX 같은 에러 아이콘이 뜨는 현상 발생

랜덤으로 발생하는 것처럼 보이지만 항상 오류가 재현됐다.

 

 

 

 

 

원인

데이터 문제는 아니었고, document.open()을 for문 안에서 호출한 것이 원인이었다.

 

for (...) {
    document.open(); 
    // 데이터 추가
}

 

여러 장의 페이지를 합쳐서 뽑을 때 document.open()과 close()를 반복하려고 했는데
그렇게 하는 방식이 아니었다.

 

결과적으로 문서를 여러 번 열고 닫으려는 꼴이 되어,
페이지 수가 많거나 여러 데이터를 한꺼번에 처리할 때 PDF 구조가 꼬이고 오류가 발생하게 된 것 같다.

 

해결 방법

document.open()을 for문 밖으로 빼서 한번만 호출하고,

반복문 안에서는 내용만 추가하도록 수정했다.

PdfWriter.getInstance(document, response.getOutputStream());
document.open();

for (...) {
    // 내용추가
    document.add(table);
}

document.close();

 

 

 

*

오류가 나는 페이지를 제외한 다른 데이터에서는 36장 이상을 합쳐도 문제가 없었는데,
이번 케이스에서만 오류가 발생했다. 🤔

 

페이지 구조나 데이터 크기에 따라 내부 버퍼 처리 방식이 달라서 평소에는 문제가 드러나지 않았던 것 같다.

 



 

 

 

 

 

728x90