如何让 CakePdf 在 CakePHP 3.x 中工作?

2024-01-29

我已经安装了CakePdf https://github.com/FriendsOfCake/CakePdf插件放在 app/plugins 文件夹中并遵循所有可能的文档,因此我的设置如下:

// config/bootstrap.php

Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true]);

Configure::write('CakePdf', [
            'engine' => 'CakePdf.WkHtmlToPdf',
            'binary' => '/wkhtmltopdf/bin/wkhtmltopdf',
            'margin' => [
                'bottom' => 15,
                'left' => 50,
                'right' => 30,
                'top' => 45
            ],
            'orientation' => 'landscape',
            'download' => true
]);


// config/routes.php

Router::extensions(['pdf']);

// controller/AppController.php


    public function initialize()
{
    parent::initialize();

    $this->loadComponent('RequestHandler');
    $this->loadComponent('Flash');
    $this->loadComponent('Auth', [
            'authenticate' => ['Form' => ['fields' => ['username' => 'email', 'password' => 'password']]],
            'loginAction' => ['controller' => 'Users', 'action' => 'login'],
            'loginRedirect' => ['controller' => 'Users', 'action' => 'index'],
            'logoutRedirect' => ['controller' => 'Users', 'action' => 'login'],
            'authorize' => 'Controller'
    ]);  
}

这是一个示例agendaPdf动作看起来像:

function agendaPdf(){

    $agenda = 'sample agenda';
    $this->viewBuilder()->options([
        'pdfConfig' => [
            'orientation' => 'portrait',
            'filename' => 'agenda_123'
        ]
    ]);

    $this->set('agenda', $agenda);

}

我已经完成了 PDF 布局,并且模板文件夹内有一个用于模型操作的 PDF 文件夹,但是,如果我转到app/users/agendapdf.pdf,我收到以下消息:

行动议程pdf.pdf未在UsersController中定义 错误:在文件:src/Controller/UsersController.php 中创建 UsersController::agendapdf.pdf()。

我真的很想知道可能出了什么问题以及如何修复它以使其正常工作。


CakePdf 不包含任何受支持的 PDF 引擎,所以我尝试了 wkhtmltopdf(参考链接 https://github.com/FriendsOfCake/CakePdf/blob/master/README.md).

分步过程:

1. Install wkhtmltopdf binary file in your local or server system (Ubuntu, Window, Mac) - Download link : [wkhtmltopdf][2]

2. Check the installed location of wkhtmltopdf binary file - (i am using    ubuntu so installed location is /usr/local/bin)

3. configure the wkhtmltopdf with cakephp:
    - in : config/bootstrap.php like below:

    Plugin::load('CakePdf', ['bootstrap' => true, 'routes' => true]);

    Configure::write('CakePdf', [
        'engine' => 'CakePdf.WkHtmlToPdf',
        'margin' => [
            'bottom' => 15,
            'left' => 50,
            'right' => 30,
            'top' => 45
        ],
        'orientation' => 'landscape',
        'download' => true
    ]);

    - Create a folder name "pdf" under your working template view folder:
        * for ex: src/template/(working view folder)/pdf (src/template/budget/pdf)

    - Create a file name "view.ctp" under newly created pdf folder under working directory:
        * for ex: src/template/(working view folder)/pdf/view.ctp (src/template/budget/pdf/view.ctp)

    - use below code in working controller - action(view - method)

            $this->viewBuilder()->options([
                'pdfConfig' => [
                    'orientation' => 'portrait',
                    'filename' => 'Invoice_' . $id
                ]
            ]);

        * for ex:

        public function view($id = null)
        {
            $budget = $this->budget->get($id);
            $this->viewBuilder()->options([
                'pdfConfig' => [
                    'orientation' => 'portrait',
                    'filename' => 'Invoice_' . $id
                ]
            ]);
            $this->set('budget', $budget);
        }

        - Hit the controller and action to download as PDF.
            * for ex: http://localhost:8765/projects/view/1.pdf

        - if you are facing "wkhtmltopdf binary is not found or not executable" error. copy your wkhtmltopdf file from "/usr/local/bin" to "/usr/bin"
            * cd /usr/local/bin
            * sudo cp wkhtmltoimage /usr/bin/wkhtmltoimage
            * sudo cp wkhtmltopdf /usr/bin/wkhtmltopdf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 CakePdf 在 CakePHP 3.x 中工作? 的相关文章

  • 使用 CakePHP 将视图嵌入到另一个视图中

    我有一个新闻控制器 每个新闻项目都有一个 查看 操作 在每个新闻项目的 查看 操作中 我想包含另一个视图 即评论控制器的 添加 操作 基本上 我需要在每个新闻项目的页面上添加一个表单来添加评论 我有两种观点 但我无法将它们联系起来 我尝试使
  • Cakephp 2.0 和基本身份验证

    我已将我的应用程序从 CakePHP 1 3 升级到 2 0 4 以前 我只能在一个控制器中使用安全组件来模拟基本 HTTP 身份验证 我曾经做过这样的事情 this gt Auth gt allow array this gt Secur
  • 无法在 CakePHP 中使用 MySQL

    这是我第一次安装框架 我很无知 我使用的是 OSX 10 7 我已将 cakephp 框架加载到 Library WebServer Documents cakephp我已经能够加载测试页面并消除一些错误和警告 现在我正在努力解决这个问题
  • 如何使用 cakephp 和 twitter bootstrap 在表单 postlink 内创建图标

    这给了我我想要的 但是当我创建 Form postLink 时 我不知道如何获取它前面的删除图标
  • 在 CakePHP v2.0 中使用电子邮件地址进行身份验证

    好吧 这个问题与我最近在 Stack Overflow 上问的问题类似 但我基本上只是使用 CakePHP 书中的代码而不是我自己的代码来尝试理解为什么有些东西不起作用 基本上 这个想法是允许用户在 Cake 2 0 版本中使用他们的电子邮
  • 使用 CakePHP 2 的特征和命名空间的正确方法是什么?

    我正在使用 CakePHP 2 4 5 和 PHP 5 5 并且想使用一个特征 我在 Utility VariablesTrait php 中有一个称为VariablesTrait 为了利用命名空间 我给了它一个命名空间App Utilit
  • 安装 CakePHP 3 后出现空白页

    我已将 CakePHP 3 的新安装复制到网络酒店 在我的本地安装中 它运行没有问题并显示标准启动页面 但在网络酒店上我得到一个空白页面 如果我将 test php 放在 webroot 中 它会毫无错误地显示 如果我在 webroot i
  • 在 CakePHP 应用程序中启用 CORS

    我正在尝试为 CakePHP 中内置的 API 启用 CORS 以便可以通过 AppController 中的以下内容访问所有请求 public function beforeFilter header Access Control All
  • 使用 git 维护不同版本的 web 应用程序的工作流程?

    在我的公司 我们已经使用 git 几个月了 我们对此很高兴 但我们仍然没有getgit 为完整的 100 我们的主要产品是一个提供不同语言的网站 前端 管理后端 其中一些网站提供了其他网站不应该提供的功能 例如 需要在给定表单上填写的字段类
  • CakePHP 无法写入某些文件

    我开始使用 CakePHP 为我的框架开发一个网站 我实际上刚刚开始并且已经遇到了错误 我无法理解它们的含义 Warning cake core cache was unable to write cake dev en us to Fil
  • cakephp 3 中的授权和 ACL

    我搜索了文档 但没有找到有关 cakephp 3 中 ACL 实现的任何信息 如何在 cakephp 3 中使用 ACL 实现授权 ACL 不像 CakePHP 2 那样内置在 CakePHP 3 中 它现在作为单独的插件提供 引用自htt
  • CakePHP:控制台命令中的自定义错误报告

    我们当前使用 CakePHP 2 4 7 和自定义错误处理程序 自定义错误处理程序适用于通过 HTTP 或 CronDispatcher 发出的每个请求 不幸的是 当向我们的控制台命令之一发出控制台请求时 错误处理程序被忽略 请参见以下示例
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • cakePHP 命名约定如何工作?

    我对 PHP 比较陌生 开始学习 PHP 但后来遇到了 cakePHP 它应该可以加快开发时间 阅读文档和博客教程后 我仍然不明白命名约定 我想直到我开始做一些例子我才会知道 但是为了让我开始 有人可以向我解释 cakePHP 如何将数据库
  • CakePHP Facebook 集成与 CakePHP-Facebook-Plugin 的注销问题

    我正在寻找一种方法CakePHP Facebook 插件 https github com webtechnick CakePHP Facebook Plugin让用户退出我的应用程序 但不让他们退出他们自己的 Facebook 如果我调用
  • 锚标记内的 CakePHP Span 标记

    我试图让 CakePHP 输出一个如下所示的链接 a href foo bar class some other classes span class icon new span FooBar a 所以我在我看来使用以下代码
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • 如何将序列化的 JSON 视图数据输出为对象数组,而不是包装在外部对象中?

    我正在将 CakePHP 数组的返回值转换为 JSON 目前如下 platformusers id 1 name user1 id 3 name user3 我希望它是这样的 id 1 name user1 id 3 name user3
  • CakePHP - 选择性 SSL

    如何对网站的某些部分强制使用 HTTPS 例如登录页面或注册页面 并使用 HTTP 来完成网站的其余部分 我最喜欢的强制转换为 https 的方法是将其作为 php 脚本中的第一件事 它可以在 Joomla 中运行 也可以在 CakePHP

随机推荐

  • 使用 RStudio 的 Git 工具时出现错误

    当尝试从 RStudio 推送到 GitHub 时 我收到以下错误 error unable to read askpass response from rpostback askpass fatal could not read User
  • 使用 Mongoose.js 按嵌套数组中的字段排序

    考虑到下面的数据结构 基于我的模型 我将如何使用猫鼬按 cars year 按降序对集合进行排序 因此 首先我在 cars 数组中找到最大年份 然后按该年份对集合进行排序 id 1234 dealershipName Eric s Mong
  • 让网格项目使用剩余空间,就像带有 flex-grow 的 Flex 项目一样:1 [重复]

    这个问题在这里已经有答案了 在 Flexbox 中 我可以在子项上指定 flex grow 1 来表示它应该占用剩余空间 html body height 100 div style display flex height 100 div
  • 如何获得 Rust 中最大值元素的迭代器?

    我想访问 a 中最大元素旁边的元素Vec
  • 如何动态配置 Opencart Live 站点?

    我有一个 opencart 站点 已从本地服务器移至实时服务器 如何在config php文件中配置站点路径 这是我们对 Opencart 配置文件进行的轻微修改 以便在将商店从开发移动到具有不同路径的实时服务器时节省时间和精力 使用此代码
  • 如何在 iOS 8 下调整 CMMotionManager 数据的方向?

    我的应用程序使用 CMMotionManager 来跟踪设备运动 但 iOS 始终以标准设备方向 底部的主页按钮 返回设备运动数据 为了使运动数据与 UIView 的方向相同 我将视图变换从视图向下累积到窗口 如下所示 CGAffineTr
  • CRM 不支持直接更新实体引用属性,请改用导航属性

    我正在使用 Ms Dynamic Web Api 和 Simple OData 我需要为链接实体添加新记录 我正在使用下面的代码片段并参考文档https github com object Simple OData Client wiki
  • .htaccess - 将子域重定向到文件夹

    这个问题可能已经被问过一千多次了 但我已经尝试了很多脚本 并且用谷歌搜索了很长时间 但什么也没找到 我想 让我们问一下吧 我只是想要m daltonempire nl被重定向到daltonempire nl m 用户不会看到 URL 发生变
  • MySQL 中应该避免使用 MEDIUMINT 吗?

    我在以下博客文章中发现了一条建议不要使用的评论MEDIUMINT 即使在 MySQL 中 也不要使用 24 位 INT 它很愚蠢 而且很慢 而且实现它的代码令人毛骨悚然 4294967295 和 MySQL INT 20 语法打击 http
  • 如何使用 Delegate.CreateDelegate 而不是 Func<> 定义委托?

    我有一个方法和两个委托 如下所示 它就是这样运行的 但我想使用Delegate CreateInstance dx 和 dy 的类型必须是Func
  • 如何在 VisualStudio 中使用 OpenCover 代码覆盖率运行 NUnit 测试?

    我是 NUnit 测试的新手 我能够为我的函数编写测试用例 现在我想要的是知道我的测试用例的代码覆盖率 为此我使用 OpenCover 但我不知道如何安装 OpenCover 并使其与 Visual Studio 2015 一起使用 任何人
  • 有没有办法抑制 TensorFlow 打印的消息?

    我认为这些信息在最初几次确实很重要 但后来就毫无用处了 它实际上使阅读和调试的情况变得更糟 我tensorflow stream executor dso loader cc 128 成功打开 CUDA库libcublas so 8 0本地
  • 错误 440:对象“PivotCaches”的方法“创建”失败

    我一直在尝试创建一个填充数据透视表的宏 然而 我不断得到这个 运行时错误 440 on the Set Cache line 以前 我遇到过其他运行时错误 但这些都很容易修复 我不明白为什么PivotCaches Create在这种情况下不
  • 解析Python文件中的所有方法和类

    我正在尝试构建一个程序 允许用户浏览到包含 python 模块的文件夹 选择文件夹后 它将列出该文件夹中的所有 python 文件以及每个模块的所有类和方法 我的问题是 有什么方法可以在不打开每个文件并解析 def 或 class 的情况下
  • Caffe的train.prototxt中平均值的顺序是什么?

    在我的咖啡馆里 train prototxt 我正在做一些输入数据转换 如下所示 transform param mirror true crop size 321 mean value 104 Red mean value 116 Blu
  • 获取声明为动态的对象的类型

    我想获取动态对象的类型 例如 dynamic tmp Activator CreateInstance assembly nmspace typeName Type unknown tmp GetType 除了上面之外 GetType 返回
  • WPF ClickOnce 错过参考

    我有一个可与本地 SQLite 和 Entity Framework Core 配合使用的 WPF 应用程序 我想使用 ClickOnce 分发我的应用程序 当我使用 Visual Studio 2017 运行它时 一切正常 但是当我使用
  • Python 检查类的实例

    有没有办法检查对象是否是类的实例 不是具体类的实例 而是任何类的实例 我可以检查一个对象不是一个类 不是一个模块 不是一个回溯等 但我对一个简单的解决方案感兴趣 isinstance 是你的朋友吗 它返回一个布尔值 可以通过以下方式使用来检
  • 用于大型密集矩阵乘法的循环平铺/分块

    我想知道是否有人可以向我展示如何有效地使用循环平铺 循环阻塞进行大型密集矩阵乘法 我在做C AB具有 1000x1000 矩阵 我按照维基百科上的循环平铺示例进行操作 但使用平铺得到的结果比不使用平铺的结果更差 http en wikipe
  • 如何让 CakePdf 在 CakePHP 3.x 中工作?

    我已经安装了CakePdf https github com FriendsOfCake CakePdf插件放在 app plugins 文件夹中并遵循所有可能的文档 因此我的设置如下 config bootstrap php Plugin