1

CakePHP アプリケーションで請求書を作成するために、TCPDF ライブラリを使用しています。/invoices/view/1私のview.ctpに行くと、PDFを生成してブラウザに表示するためのコードが含まれています。PDF を電子メールの添付ファイルとして送信する機能を追加したいので、アクションを作成/invoices/send_invoiceし、コードを view.ctp から電子メール テンプレートにコピーしました。

私が立ち往生しているところで、添付する前に最初にPDFを生成する方法がわかりません。私が使用するview.ctpページテンプレートの最後に

$pdf->Output(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf', 'I');

ファイルを作成せずにブラウザで表示するためにPDFを送信します。$pdf->Output() の最後のパラメーターとして 'F' または 'FI' を使用すると、ファイルを保存できますが、ユーザーが電子メールとして送信する前に請求書を表示することは保証されません。

私の send_invoice アクションでは、添付するために、pdf をファイルとして生成する必要があります。

$email->attachments(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf');

電子メール テンプレートに pdf ファイルを生成するコードがあるということは、添付しようとしたときにファイルがまだ存在していないことを意味します。電子メール テンプレート自体からファイルを添付する方法はありますか? Invoice モデルに関数を記述して pdf を生成できるのではないかと考えていましたが、ビュー ヘルパー (Number ヘルパーなど) を使用してデータをフォーマットしたいと考えています。ビューでコードを実行してから、ビューを表示せずにコントローラー/アクションに戻ることはできますか?

4

3 に答える 3

0

これを行うには、ビュー オブジェクトを作成し、適切にレンダリングするために必要な関数を手動で呼び出します。

 $view = new View(null, false);
 $view->set(//set view data here like normal);
 $view->viewPath = 'pdf';  //folder to look in in Views directory
 $output = $view->render('pdf', 'pdf');  //layout name and view name

次に、出力を保存するか、必要に応じて使用します。

于 2013-10-02T19:49:49.067 に答える
0

を使用できる場合は、別の可能性としてwkhtmltopdf、一時 PDF ファイルを生成し、添付して削除することもできます。 wkhtmltopdf主な仕事をします.htmlファイルをpdfに直接変換します. html はあなたの見解です。

于 2014-07-25T20:49:41.863 に答える