【问题标题】:CakePHP 2 : Implement CakePDF plugin by CeeramCakePHP 2 : Ceeram 实现 CakePDF 插件
【发布时间】:2013-02-07 12:43:17
【问题描述】:

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

我正在使用 CakePHP 2,我在 windows vista 上使用 wamp 在本地工作。我按照自述文件中的所有内容进行操作,但在某些时候卡住了。

我首先想做的是使用 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 的新手,所以如果你能告诉我如何完成这项工作,我将非常感激。我相信它会对其他人有所帮助,因为有很多像我这样的新手想要这样做,但因为这都是为高级程序员准备的,我们无法弄清楚如何将这些部分组合在一起。

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

[每次有新答案对其进行改进时,此帖子都会被修改]

【问题讨论】:

  • 您是如何访问它的?确切的网址是什么?还有,到底发生了什么?
  • 你为什么把它重命名为CakePDF?? CakePdf 是正确的
  • @mark: 我使用 localhost/CakePHP/invoices/view/1.pdf 访问并得到 500 错误,即使我使用 Router::mapResources(array (“发票”));在位于 config 文件夹中的路由文件中。 AT->Ceeram:我编辑了我原来的帖子来纠正这个错误。
  • 如果文档有误请联系插件作者。
  • @MartinBean 他已经知道这个帖子,也评论和回答了

标签: cakephp cakephp-2.x


【解决方案1】:

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

看来我忘了在自述文件中添加 RequestHandler 组件。

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

【讨论】:

  • 感谢 Ceeram。我刚刚编辑了我的原始帖子,包括“public $components = array('RequestHandler');”在我的控制器中。关于 WkHtmlToPdf,我怎样才能指出它在哪里?你的意思是它在windows上根本不起作用?能不能说的具体点,谢谢你的帮助,谢谢!无论如何,现在我在尝试访问 localhost/CakePHP/invoices/view/1.pdf 时遇到 500 错误,即使我尝试使用 Router::mapResources(array('Invoices '));
  • 路由器::mapResources(array('Invoices'));将制作休息路线,因此您可以通过localhost/invoices/1.pdf 访问同一张发票。如果首先包含引擎,您可以尝试使用一个。对于 wkhtmltopdf 你需要安装这个,自述文件有一个链接。
【解决方案2】:

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

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

详情请见: http://www.dereuromark.de/2014/04/08/generating-pdfs-with-cakephp/

【讨论】:

    猜你喜欢
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多