현재 게시글을 바로 pdf로 바꿔서 다운로드 하게 하는 걸 만들고 있는데

 

dompdf를 이용했더니, 서버에 저장은 되는데

 

아무리 해도 바로 다운로드가 안되네요.


    function procMemberSavePDF()
    {
        // html을 받아서 save.php로 보낸다.
        
    require_once("/dompdf/dompdf_config.inc.php");

$html = "
<html>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<style>
body { font-family:'NanumGothic', '나눔고딕', 'dotum', '돋움'; }
</style>
<body>
테스트 입니다.
</body>
</html>
";

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
//$dompdf->stream("sample.pdf");

$file_to_save = '/dompdf/file3.pdf';
//save the pdf file on the server
file_put_contents($file_to_save, $dompdf->output()); 
 

 

    }

 

 

  • profile

    주석처리된 stream() 메소드가 직접 다운로드하는 기능 아닐까요?

     

    아니면 그냥 파일에 저장한 후 fopen() 함수로 그 파일을 다시 읽어서 뿌려주고

    작업이 끝나면 파일을 삭제해 버려도 되고요.

     

    어떤 방식을 사용하든, 파일을 뿌려준 후에 바로 exit() 해버리셔야 합니다.

    안 그러면 XE에서 파일 뒤에 이상한 것을 갖다 붙입니다 ㅋ

  • profile profile
    말씀하신대로 stream이 메소드 맞는데, 이상하게 일반 php에서는 잘 작동하는데,

    member controller 에 넣으면 안되더라구요.

    heaer뿌려주는게 안먹히는거 같아서요..
  • ?
    $dompdf->stream("sample.pdf");

    주석 처리된 부분이 sample.pdf로 파일을 다운받을 수 있게 헤더를 뿌려주는 것 같은데요.
    주석 처리를 풀어보세요.

    그리고 파일 다운로드 마지막 부분에

    Context::close();
    exit();

    를 추가해주셔야 할 것 같습니다. Context::close() 는 선택사항인데, DB 세션을 사용할 때 세션을 안 닫아주고 exit() 시키면 의도치 않은 오류가 생기더라고요.
  • ? profile
    exit(); 해줘도 안되네요.. 이게 일반 php에서는 stream 이 잘 먹힙니다

    member.controller의 함수에서는 안먹히네요..