DOMpdf未保存在pc位置

时间:2015-10-25 15:41:21

标签: php html pdf dompdf

我想创建pdf并希望强制将pdf保存在PC中的任何位置,例如在浏览器的下载文件夹中 Pdf文件保存在项目文件夹中,我不知道问题是什么。生成pdf文件的PHP代码如下:

PHP代码:     

$pdf_content='
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            </head>

            <style type="text/css">                         
                #pdf_header, #pdf_container{ border: 1px solid #CCCCCC; padding:10px; }             
                #pdf_header{ margin:10px auto 0px; border-bottom:none; }                
                table{ width:580px; }               
                #pdf_container{margin:0px auto; }
                .rpt_title{ background:#99CCFF; }                                                           
            </style>

            <body>
            <div id="pdf_header" >
            <table border="0" cellspacing="1" cellpadding="2">
            <tr id="hdRow">
                <td width="20%"><img src="space_age_header.jpg" style="width:250px" ></td>              
                <td width="30%" align="center">Sample File</td>
                <td width="30%" align="left">Marimuthu<br>User Code : 179865420</td>
            </tr>
            </table>
            </div>
            <div id="pdf_container" >
            <table border="0" cellspacing="1" cellpadding="2">
            <tr align="center" bgcolor="pink" style="color:#FFF"><td colspan="3"><b>Your Statement Summery</b></td> </tr>
            <tr bgcolor="#006" style="color:#FFF"><td colspan="3" align="left">Your Heading.</td></tr>
            </table>
            <table> <tr> <td> Name </td><td> Department</td><td>Total </td><td>Grade </td> </tr>
            <tr> <td> Marimuthu </td><td> Admin</td><td>250 </td><td>A </td> </tr>          
            </div></body></html>';
            //$filename = 'app.pdf';
            //$reportPDF=createPDF(12, $pdf_content, 'activity_Report', $name );
    //function createPDF($pdf_userid, $pdf_content, $pdf_For, $filename){

    //$path='UsersActivityReports/';
    /*$rndNumber=rand();
    $filename=$pdf_userid.date("Ymd").$rndNumber.'.pdf';*/
    $dompdf=new DOMPDF();
    $dompdf->load_html($pdf_content);
    $dompdf->render();
    $output = $dompdf->output();
    file_put_contents('app.pdf', $output);

    ?>

1 个答案:

答案 0 :(得分:1)

您不能强制PDF保存在客户端计算机上的任何位置,以防您想要做的事情(您可能会澄清您的问题)。但是,您可以将PDF发送到浏览器并指示您要弹出保存对话框。

PDF正在保存到您的项目文件夹(在您的服务器上),因为您使用以下内容:

$output = $dompdf->output();
file_put_contents('app.pdf', $output);

$dompdf->output()返回一个字符串,file_put_contents()将字符串的内容放入服务器文件系统的文件中。由于您没有指定路径,因此文件将放在当前工作目录中(例如,您的脚本所在的位置)。

如果要将PDF发送给客户端,请使用$dompdf->stream()。用以下内容替换上面提到的两行,让浏览器显示保存对话框:

$dompdf->stream('app.pdf');

或者,更明确地

$dompdf->stream('app.pdf', array('Attachment' => true));

最后一点说明。您不能同时使用流和输出方法。如果要将文件保存到服务器并发送到浏览器,则必须保存PDF,设置HTTP标头,然后将PDF发送到浏览器:

$output = $dompdf->output();
file_put_contents('app.pdf', $output);
header('Content-type: application/pdf');
header("Content-Length: " . mb_strlen($tmp, '8bit'));
header("Content-Disposition: attachment; filename=app.pdf);
echo $output;

(标题取自CPDF stream method。)