我正在尝试实现Ceeram设计的CakePDF插件。
我正在使用CakePHP 2,我在Windows Vista上使用wamp在本地工作。我按照自述文件中的所有内容进行了操作,但我在某些时候陷入困境。
我首先要做的是使用WkHtmlToPdf引擎将HTML链接转换为PDF。我看到很多人都有问题要让它工作,所以我会在以下不同的步骤中详细介绍。
我在https://github.com/ceeram/CakePdf下载了该插件 我将包含的文件夹解压缩到app / Plugin / CakePdf
我添加了以下行 - app / Config / bootstrap.php:
CakePlugin::load('CakePdf', array('bootstrap' => true, 'routes' => true));
Configure::write('CakePdf', array(
'engine' => 'CakePdf.WkHtmlToPdf'
),
'orientation' => 'portrait',
'download' => true
));
我已经创建了我的控制器“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));
}
}
我在我的视图文件夹中创建了一个pdf文件夹,并在app / View / Invoices / pdf / view.ctp中创建了view.ctp。
我在布局文件夹中创建了一个pdf文件夹并创建了app / View / Layouts / pdf / default.ctp
就是这样。在我看来,我无法从URL制作PDF文件。 虽然我不得不提到我是OOP和CakePHP的新手,所以如果你能告诉我如何完成这件事,我将非常感激。我相信它会对其他人有所帮助,因为像我这样的许多新手想要这样做,但因为这些都是高级程序员的意思,我们无法弄清楚如何将各个部分放在一起。
非常感谢您的理解和帮助!
[这个帖子每次修改都有一个改进它的新答案]
答案 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/