2017-12-31 65 views
0

DOMpdfを使用してページのpdfファイルを作成しました。codeignitorの場所に移動してpdfをダウンロードしました

<?php 

use Dompdf\Dompdf; 
class Pdfgenerator { 

    public function generate($html, $filename='', $stream=TRUE, $paper = 'A4', $orientation = "portrait") 
    { 
    $dompdf = new DOMPDF(array('enable_remote' => true)); 
    $dompdf->loadHtml($html); 
    $dompdf->setPaper($paper, $orientation); 
    $dompdf->render(); 
    if ($stream) { 
     $dompdf->stream($filename.".pdf", array("Attachment" => 0)); 
    } else { 
     return $dompdf->output(); 
    } 
    } 
} 

ビューページにSave As Pdfボタンをクリックすると、ページのPDFはDOMpdfを使用してコントローラ機能で作成され、それが設定され、ダウンロードパスにダウンロードできる場所から、ブラウザで新しいタブでPDFを開きますブラウザ用。私が実際に欲しい

$html = $this->load->view('test/pdfview', $this->data, true); 
$this->load->library('pdfgenerator'); 
$filename = 'testfile'; 
$this->pdfgenerator->generate($html, $filename, true, 'a4', ''); 

は、PDFを作成するときに、プロンプト保存するよう指定されたパス上のファイルが既に指定された場所に移動しているが開きますダウンロードすることです。適切な保存場所に移動できる場合は、適切な保存場所に移動できます。 これは、私が見つけたものの、すでに尋ねられたやや似たような質問ですが、私はそれが役に立つと思っていませんでした。

任意の提案は

答えて

1

参考になるあなたは、ブラウザ

<?php 


use Dompdf\Dompdf; 
class Pdfgenerator { 

    public function downLoadPdf(){ 
     $name= "testfile.pdf"; 

     header('Content-Description: File Transfer'); 
     header('Content-Type: application/force-download'); 
     header("Content-Disposition: attachment; filename=\"" . basename($name) . "\";"); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($name)); 
     ob_clean(); 
     flush(); 
     readfile("your_file_path/".$name); //showing the path to the server where the file is to be download 

    } 
} 
    ?> 

に生成されたPDFを送信するどのPHPで以下のようなスクリプトを作成することができますあなたのクラスとcalにこの関数を追加するだけです保存ボタンをクリックするとajaxを使用します(ビューページに存在する場合)
保存ボタンをクリックしてブラウザからこのスクリプトを呼び出すと、ブラウザは自動的に保存ウィンドウを開き、ファイルを希望の場所に保存します。

+1

これは動作しないようです。私はpdfを作成した後にこのコードを追加しました。つまり、$ this-> pdfgenerator-> generate($ html、$ filename、true、 'a4'、 '')の後、問題は同じで、ブラウザページでpdfが開き、保存ウィンドウは表示されません。 – Whoosis

+1

回答を編集しました。新しい機能を作成し、ビューから保存ボタンで呼び出す必要があります。 –

+1

私はあなたの助けに感謝しますが、私はあなたのスニペットでpdfがどのように生成されるのか理解できません。すなわち、保存ボタン呼び出しで、htmlからpdfに変換する関数が呼び出されます(つまり '$ this-> pdfgenerator-> generate($ html、 $ filename、true、 'a4'、 '') ')、私がsavePDFを呼び出すと、' testfile.pdf'はまだダウンロードされていませんか? – Whoosis

関連する問題