2012-10-10 67 views
0

我有一個mail_merge函數(使用cakephp),當直接從瀏覽器調用時 domain.com/contacts/mail_merge會根據需要使用數據庫映射字段生成PDF並將其保存到服務器。mPDF - 當從另一個函數內調用時不生成PDF

但是我試圖從另一個函數調用這個mail_merge函數。例如$ this-> mail_merge($ cond,1); PDF不會生成。數據庫字段仍然到達mail_merge函數,所以不是這個問題。任何想法爲什麼這可能會發生?我已經更新了下面的代碼,現在包含一個簡單的生成的txt文件,其中包含我試圖放在PDF上的代碼,並且這個代碼很有用,所以只有一些關於mPDF的內容,它們在從函數調用時不會生成PDF。

感謝

我mail_merge功能如下:

// FUNCTION GENERATE MAIL MERGE - mPDF 
// --------------------------------------------------------------> 
function mail_merge($conditions=NULL, $mail_merge_id=1) 
{ 
    // REMOVE THE STANDARD LAYOUT 
    // ------------------------------------------------------> 
    $this->layout = null; 

    // GET THE CONTACTS 
    // -------------------------------------------------------------> 
    $contacts = $this->Contact->Card->find('all', array(
                'limit' => 10, 
                //'fields' => $fields, 
               'contain' => array('Contact', 'Prospect', 'SaleDetail'), 
                'conditions' => $conditions 
               )); 
    $this->set('contacts', $contacts); 

    // GE THE CONTENTS 
    // ------------------------------------------------------------> 
    $this->loadModel('MailMerge'); 
    $content = $this->MailMerge->find('first', array(
               'conditions' => array('MailMerge.id' => $mail_merge_id), 
               'fields' => array('MailMerge.description') 
               )); 
    $this->set('content', $content); 

    // initializing mPDF 
    // ---------------------------------------------------------------------------> 
    $this->Mpdf->init(); 

    // RENDER THE VIEW AND SET AS A VARIABLE TO WRITE THE HTML 
    // ---------------------------------------------------------------------------> 
    $response = $this->render('mail_merge'); 
    $thebody = $response->body(); 
    $this->Mpdf->WriteHTML($thebody); 

    // setting filename of output pdf file 
    // ---------------------------------------------------------------------------> 
    $thefilename = "mail_merge_".date("d.m.Y_His").".pdf"; 
    $this->Mpdf->setFilename(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename); 

    // setting output to I, D, F, S 
    // ---------------------------------------------------------------------------> 
    $this->Mpdf->setOutput('F'); 

    // TEMP - CREATE TXT FILE ON THE SERVER 
    // ------------------------------------------------------------------------> 
    $thefilenametxt = "mail_merge_".date("d.m.Y_His").".txt"; 
    $ourFileHandle = fopen(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilenametxt, 'w'); 
    fwrite($ourFileHandle, $thebody); 
    fclose($ourFileHandle); 

    return $thefilename; 

} // END MAIL MERGE 

回答

0

我發現這個問題與組件的setOutput功能撒謊。

當我改變了:

$this->Mpdf->setFilename(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename); 
$this->Mpdf->setOutput('F'); 

$this->Mpdf->Output(APP. WEBROOT_DIR . "/files/csv_exports/" . $thefilename, 'F'); 

它的工作需要。

相關問題