IT/PHP

PHP excel, pdf 등 파일 관련 오류 발생 시 ob_end_clean 사용

1am_wish 2023. 4. 13. 14:27
728x90
반응형

기존에 pdf 데이터를 만들기위한 라이브러리로 fpdf를 사용했었다.

그러나 fpdf는 유니코드를 제공안해서 utf-8로 변환해서 사용해왔는데,
랲, 벑, 숧 과 같이 조합이 독특한 문자를 해결할 수 없어서 유니코드를 적용하기 위해 알아보던 중, 

tfpdf라는 라이브러리가 기존 fpdf 라이브러리의 확장된 유니코드 사용 가능한 라이브러리인 것을 발견했다. 이를 활용해서 tfpdf 라이브러리로 변경하여 작업을 했는데 아래와 같은 오류가 발생했다. 

 

Fatal error: Uncaught Exception: tFPDF error: Some data has already been output, can't send PDF file in /var/www/swc-####/lib/tfpdf/tfpdf.php:276 Stack trace: #0 /var/www/swc-####/lib/tfpdf/tfpdf.php(1267): tFPDF->Error('Some data has a...') #1 /var/www/swc-####/lib/tfpdf/tfpdf.php(1219): tFPDF->_checkoutput() #2 /var/www/swc-smartsms.aligo.in/shop/order_sheet.html(304): tFPDF->Output('D', 'test.pdf', true) #3 {main} thrown in /var/www/swc-####/lib/tfpdf/tfpdf.php on line 276

 

"일부 데이터가 이미 출력되었습니다. PDF 파일을 보낼 수 없습니다"라는 의미를 갖고 있다. 따로 출력하는 코드도 없어서 의아하긴 했지만 ,, 출력버퍼 오류인거같아서 출력버퍼를 파일 다운로드 직전에 추가하였다.

ob_end_clean();
$pdf->Output('D', 'test.pdf', true);

이렇게 수정하니 정상적으로 작동하는데, 전에 엑셀 관련 작업했을때도 비슷한 경험이 있다.

파일 추출, 다운로드와 같은 작업을 할땐 출력 버퍼의 모든 내용을 정리해야겠다!

 

참고 : http://www.lug.or.kr/files/docs/PHP/function.ob-end-clean.html

728x90
반응형