CakePHP 2:由Ceeram实现CakePDF插件

时间:2013-02-07 12:43:17

标签: cakephp cakephp-2.x

我正在尝试实现Ceeram设计的CakePDF插件。

我正在使用CakePHP 2,我在Windows Vista上使用wamp在本地工作。我按照自述文件中的所有内容进行了操作,但我在某些时候陷入困境。

我首先要做的是使用WkHtmlToPdf引擎将HTML链接转换为PDF。我看到很多人都有问题要让它工作,所以我会在以下不同的步骤中详细介绍。


第1步:Ceeram

的CakePdf插件

我在https://github.com/ceeram/CakePdf下载了该插件 我将包含的文件夹解压缩到app / Plugin / CakePdf


第2步:Bootstrap

我添加了以下行 - 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的新手,所以如果你能告诉我如何完成这件事,我将非常感激。我相信它会对其他人有所帮助,因为像我这样的许多新手想要这样做,但因为这些都是高级程序员的意思,我们无法弄清楚如何将各个部分放在一起。

非常感谢您的理解和帮助!

[这个帖子每次修改都有一个改进它的新答案]

2 个答案:

答案 0 :(得分:1)

您需要添加RequestHandler组件,并浏览到localhost / invoices / view / 1.pdf

看起来我忘记提及在自述文件中添加RequestHandler组件。

另外对于WkHtmlToPdf,您需要告诉它它可以找到它的位置,并且因为您在Windows上,默认位置肯定不适合您。在Windows上安装后,您可以使用Configure :: write('CakePdf.binary','C:\ Program Files \ wkhtmltopdf \ wkhtmltopdf.exe')设置位置

答案 1 :(得分:0)

您在app / config / routers.php中缺少此代码

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

详细信息: http://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp/