右, 我已经为wkhtmltopdf(https://github.com/ignited/laravel-pdf)安装了服务提供程序 当我添加
Route::get('/', function() {
$pdf = PDF::make();
$pdf->addPage('<html><head></head><body><b>Hello World</b></body></html>');
$pdf->send();
});
在我的routes.php中,它会生成一个pdf文件。
我要做的是将整个div发布到我的控制器,然后从中生成PDF。
我的表单:
<form id="convert" action="{{{ URL::to('') }}}/pdf" method="post">
<input type="hidden" name="body" id="body">
<input type="submit" class="btn btn-success pdf" value="Done? Convert to PDF!">
</form>
jQuery:
$('form#convert').submit(function(){
$("input#body").val($("#preview").html());
});
routes.php文件:
Route::post('pdf', 'PdfController@index');
最后我的控制器(PdfController):
<?php
class PdfController extends BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$data = Input::get('body');
$pdf = PDF::make();
$pdf->addPage($data);
$pdf->send('test.pdf');
if(!$pdf->send())
return $pdf->getError();
}
}
不知怎的,我认为它是一个基本的POST vs GET,或者我做得不对。
现在我收到错误Could not run command '/var/www/docassembly/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'
但如果我用直接html替换我的控制器中的变量,我会得到同样的错误。
如果我在表单和路径中使用GET并直接传递html作为参数,则错误不同:
Could not run command '/var/www/docassembly/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64' test /tmp/tmp_WkHtmlToPdf_Hq98EZ: Loading pages (1/6) [> ] 0% [======> ] 10% [============================================================] 100% Error: Failed loading page http://test (sometimes it will work just to ignore this error with --load-error-handling ignore)
因此在控制器中使用它也是一个问题。 任何线索?
答案 0 :(得分:0)
根据您提供的documentation of the package,它表示您需要在composer.json
文件中包含二进制文件才能使其正常工作:
注意(您还必须包含wkhtmltopdf二进制文件) 32位系统
{
"require": {
"h4cc/wkhtmltopdf-i386": "*"
}
}
64位系统
{
"require": {
"h4cc/wkhtmltopdf-amd64": "*"
}
}
如果需要,您可以同时包含这两种内容。
听起来像Laravel试图执行64位二进制文件而无法找到它。确保:
chmod
设置的执行权限。答案 1 :(得分:0)
原来答案很简单,只需要用
开始输入 <html><head></head><body>
并以</body></html>
由于我对whtml2pdf的输入是div的内容,我只需将这些html标签插入发送给控制器的输入值即可。