1

Ceeramによって設計されたCakePDFプラグインを実装しようとしています。

私はCakePHP2を使用しており、WindowsVistaでWampを使用してローカルで作業しています。私はreadmeファイルからすべてを追跡しましたが、ある時点で行き詰まりました。

私が最初にやりたいのは、WkHtmlToPdfエンジンを使用してHTMLリンクをPDFに変換することです。多くの人が問題を抱えているので、次のさまざまな手順で詳しく説明します。


ステップ1:CeeramによるCakePdfプラグイン

https://github.com/ceeram/CakePdfでプラグインをダウンロードしました。 含まれているフォルダーをapp/Plugin/CakePdfに抽出しました。


ステップ2:ブートストラップ

次の行を追加しました-app/Config / bootstrap.php:

CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true));

Configure::write('CakePdf', array(
    'engine' => 'CakePdf.WkHtmlToPdf'
    ),
    'orientation' => 'portrait',
    'download' => true
));

ステップ3:コントローラー

コントローラー「InvoicesController.php」を作成しました-app/Controller / InvoicesController.php:

クラスInvoicesControllerはAppControllerを拡張します{

    public $components = array('RequestHandler');

    public function view($id = null) {

        $this->Invoice->id = $id;

        if (!$this->Invoice->exists()) {
            throw new NotFoundException(__('Invalid invoice'));
        }

        $this->pdfConfig = array(
            'orientation' => 'portrait',
            'filename' => 'Invoice_' . $id
            );

        $this->set('invoice', $this->Invoice->read(null, $id));
    }
}

ステップ4:表示

ビューフォルダーにpdfフォルダーを作成し、app / View / Invoices / pdf/view.ctpにview.ctpを作成しました。


ステップ5:レイアウト

レイアウトフォルダーにpdfフォルダーを作成し、app / View / Layouts / pdf/default.ctpを作成しました


それについてです。私の見解では、URLからPDFファイルを作成できませんでした。私はOOPとCakePHPの初心者であることに言及する必要がありますが、これを行う方法を教えていただければ幸いです。私のようにこれをやりたいと思っている初心者がたくさんいるので、それは他の人にも役立つと確信していますが、それはすべて上級プログラマー向けなので、それらを組み合わせる方法を理解することはできません。

何卒ご理解とご協力を賜りますようお願い申し上げます。

[この投稿は、それを改善する新しい回答があるたびに変更されます]

4

2 に答える 2

1

RequestHandler コンポーネントを追加し、localhost/invoices/view/1.pdf を参照する必要があります。

readme に RequestHandler コンポーネントを追加することを忘れていたようです。

また、WkHtmlToPdf の場合は、どこで見つけられるかを伝える必要があります。Windows を使用しているため、デフォルトの場所は確実に機能しません。Windowsにインストールした後、 Configure::write('CakePdf.binary', 'C:\Program Files\wkhtmltopdf\wkhtmltopdf.exe') で場所を設定できます

于 2013-02-07T13:04:31.907 に答える
0

app/config/routers.php にこのコードがありません

Router::parseExtensions(); Router::setExtensions(array('json', 'xml', 'rss', 'pdf'));

詳細はこちら: http://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp/

于 2015-11-17T21:49:38.057 に答える