【问题标题】:Trouble Generating PDF with CakePHP and CakePdf使用 CakePHP 和 CakePdf 生成 PDF 时遇到问题
【发布时间】:2013-06-04 20:07:20
【问题描述】:

我正在尝试使用 CakePdf 在 CakePHP 中生成一个 pdf 文件。我在 CourseGradesController 中有一个名为 viewReport 的函数。我希望 viewReport 允许您从选择字段中选择一个学生,然后在提交表单后,它将生成一个包含适当数据的 PDF。如果我将数据放入表格而不尝试制作 PDF,页面将正确显示,所以我认为这不是问题。在 bootstrap.php 中,我有

CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true));
Configure::write('CakePdf', array(
    'engine' => 'CakePdf.WkHtmlToPdf',
    'options' => array(
        'print-media-type' => false,
        'outline' => true,
        'dpi' => 96
    ),
    'margin' => array(
        'bottom' => 15,
        'left' => 50,
        'right' => 30,
        'top' => 45
    ),
    'binary' => '/var/www/cakephp/app/Plugin/CakePdf/Vendor/WkHtmlToPdf',
    'orientation' => 'landscape',
    'download' => false
));

我已将 WkHtmlToPdf 文件夹移至 /var/www/cakephp/app/Plugin/CakePdf/Vendor/WkHtmlToPdf,因此 lib 和 include 文件夹位于该目录中。

在CourseGradesController的viewReport函数中,我有

    function viewReport($id = null)
    {
        $this->CourseGrade->id = $id;
            if (!$this->CourseGrade->exists()) 
            {
                throw new NotFoundException(__('Invalid invoice'));
            }
            $this->pdfConfig = array(
                'orientation' => 'portrait',
                'filename' => 'Invoice_' . $id
            );
            $this->set('invoice', $this->CourseGrade->read(null, $id));
        ...

    }

如果我导航到 /courseGrades/viewReport,我会收到错误消息“错误:在此服务器上找不到请求的地址 '/cakephp/courseGrades/viewReport'。”

如果我导航到 /courseGrades/viewReport/1.pdf,那么我只会看到一个完全空白的屏幕。

【问题讨论】:

  • 一些注意事项:1)您应该尽可能用相关信息更新您的previous question,而不是开始一个新问题(虽然这确实涉及一个新问题,但可能需要解决原来的问题) ; 2)不要require_oncedompdf.php,这是一个使用dompdf类的插件脚本,不是类本身的一部分; 3)您不需要spl_autoload_register('DOMPDF_autoload');,因为这是通过 dompdf_config.inc.php 发生的。
  • 至于您的CakePHP 问题...您显示getStudentReport_pdf 操作的代码,getStudentReport 是否相同。另外,你确定$this->Post->read() 正在返回任何东西吗?尝试$post = $this->Post->read() 然后debug($post) 以查看是否正在检索数据。仅供参考,您不需要为 read() 方法指定任何参数,因为您已经在代码的前面设置了模型 ID。
  • 我提出了一个新问题,因为我决定尝试这种方法,因为似乎有更多人使用它。我做了你建议的更改,并在帖子中更新了我的代码,但我遇到了同样的问题。
  • 好吧,首先尝试解决错误。关于“间接修改”错误,请参阅迁移指南中的以下注释:book.cakephp.org/2.0/en/appendices/…

标签: cakephp dompdf


【解决方案1】:

我强烈推荐使用这个插件来完成这种工作。

https://github.com/ceeram/CakePdf

【讨论】:

  • 我正在尝试使用这个插件,但我仍然遇到问题。我想要做的是,你在 CourseGradesController 的 viewReport 函数中选择一个学生。提交该学生后,它会将该页面重新生成为 PDF 并添加学生报告信息。我现在收到一条错误消息,指出当我尝试重新加载该页面时未找到该页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
相关资源
最近更新 更多