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
'ERROR' 카테고리의 다른 글
| 톰캣 접속 지연 오류 해결 -server.xml connectionTimeout 설정 (1) | 2025.07.03 |
|---|---|
| net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 오류 해결 (1) | 2025.06.18 |