如何安装phpwkhtmltopdf
我正在尝试在共享服务器(webhotel)上安装phpwkhtmltopf。服务器已经安装了composer,并且我已经使用SSH连接到服务器。但我对这位作曲家不太熟悉,所以我可能在这里犯了一些非常基本的错误 因此,我从以下位置下载了zip文件: 并将其上的文件解压缩到服务器上名为phpwkhtmltopdf的目录。 然后,打开指向该目录的SSH cd并运行composer需要mikehaertl/phpwkhtmltopdf,但我只得到了行开头的问号。 关于问号,我读到这可能是检测unicode的问题,所以我将htaccess:php\u flag detect\u unicode设置为Off,现在似乎在本地关闭了如何安装phpwkhtmltopdf,php,composer-php,wkhtmltopdf,Php,Composer Php,Wkhtmltopdf,我正在尝试在共享服务器(webhotel)上安装phpwkhtmltopf。服务器已经安装了composer,并且我已经使用SSH连接到服务器。但我对这位作曲家不太熟悉,所以我可能在这里犯了一些非常基本的错误 因此,我从以下位置下载了zip文件: 并将其上的文件解压缩到服务器上名为phpwkhtmltopdf的目录。 然后,打开指向该目录的SSH cd并运行composer需要mikehaertl/phpwkhtmltopdf,但我只得到了行开头的问号。 关于问号,我读到这可能是检测unicod
但是仍然存在疑问,php wkhtmltopdf没有安装。如何安装该软件包?问题是您要获取该软件包
mikehaertl/phpwkhtmltpdf
两次:
- 首先,您获取了zip并将其解压缩(手动安装)
- 然后,您运行Composer来请求它(通过Composer安装)
当您想使用Composer安装软件包时,只需在干净的项目文件夹中运行
Composer require mikehaertl/phpwkhtmltopdf
然后Composer将提取包并将其放入/vendor
文件夹中
就这样
现在,为了使用它,您需要两件事:
// Register Composer Autoloader
define('VENDOR_DIR', __DIR__ . '\vendor' . DS);
if (!is_file(VENDOR_DIR . 'autoload.php')) {
throw new \RuntimeException(
'[Error] Bootstrap: Could not find "vendor/autoload.php".' . PHP_EOL .
'Did you forget to run "composer install --dev"?' . PHP_EOL
);
}
require VENDOR_DIR . 'autoload.php';
use mikehaertl\wkhtmlto\Pdf;
$pdf = new Pdf('/path/to/page.html');
if (!$pdf->saveAs('/path/to/page.pdf')) {
echo $pdf->getError();
}
以下是我的步骤:
c:\program files\wkhtmltopdf
c:\ProgramFiles\wkhtmltopfd\bin
pdf test
composer require mikehaertl/phpwkhtmltopdf
makepdf.php
:
/**
* Register Composer Autloader
*/
define('VENDOR_DIR', __DIR__ . '\vendor' . DIRECTORY_SEPARATOR);
if (!is_file(VENDOR_DIR . 'autoload.php')) {
throw new \RuntimeException(
'[Error] Bootstrap: Could not find "vendor/autoload.php".' . PHP_EOL .
'Did you forget to run "composer install --dev"?' . PHP_EOL
);
}
require VENDOR_DIR . 'autoload.php';
/**
* Use library
*/
use mikehaertl\wkhtmlto\Pdf;
$pdf = new Pdf(array(
'binary' => 'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe',
'ignoreWarnings' => true,
'commandOptions' => array(
'procEnv' => array(
// Check the output of 'locale' on your system to find supported languages
'LANG' => 'en_US.utf-8',
),
'escapeArgs' => false,
'procOptions' => array(
// This will bypass the cmd.exe which seems to be recommended on Windows
'bypass_shell' => true,
// Also worth a try if you get unexplainable errors
'suppress_errors' => true,
),
),
));
$pdf->addPage('<html>
<head>
</head>
<body>
<div id="print-area">
<div id="header">
This is an example header.
</div>
<div id="content">
<h1>Demo</h1>
<p>This is example content</p>
</div>
<div id="footer">
This is an example footer.
</div>
</div>
</body>
</html>');
if (!$pdf->saveAs('page.pdf')) {
echo $pdf->getError();
}
/**
*寄存器生成器自动加载程序
*/
定义('VENDOR\u DIR','VENDOR\u DIR.'\VENDOR'.DIRECTORY\u分隔符);
如果(!is_文件(VENDOR_DIR.'autoload.php')){
抛出新的\RuntimeException(
“[错误]引导:找不到“vendor/autoload.php”。.php\u EOL。
'您是否忘记运行“composer安装--dev”?'
);
}
需要供应商_DIR。”autoload.php';
/**
*使用图书馆
*/
使用mikehaertl\wkhtmlto\Pdf;
$pdf=新pdf(数组)(
'binary'=>'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe',
“ignoreWarnings”=>true,
“commandOptions”=>数组(
'procev'=>数组(
//检查系统上“locale”的输出以查找支持的语言
“LANG”=>“en_US.utf-8”,
),
“逃避责任”=>错误,
“procOptions”=>数组(
//这将绕过Windows上建议使用的cmd.exe
“绕过外壳”=>true,
//如果出现无法解释的错误,也值得一试
“抑制错误”=>true,
),
),
));
$pdf->addPage($pdf)
这是一个示例标题。
演示
这是示例内容
这是一个示例页脚。
');
如果(!$pdf->saveAs('page.pdf')){
echo$pdf->getError();
}
php makepdf.php
page.pdf
就这样……:) 已经感谢Jens了,但是仍然没有什么问题:我更喜欢通过Composer进行安装,因为它是建议的方法,然后运行Composer require mikehaertl/phpwkhtmltopf在emtpy文件夹中。但在下一行开始时,再次得到的只是问号。然后,我也尝试了手动版本,包括Src dir中的3个文件到我的测试文件(与步骤2的内容类似),但只得到了以下错误:PHP致命错误:在第17行的/home/testdomain/public_html/Command.PHP中找不到类'mikehaertl\shellcommand\Command'。因此,我认为它缺少一些文件OK,我试图复制它,但失败了。我已经更新了我的答案,并包括了生成
page.pdf
所执行的所有步骤。请让我知道这是否也适用于您。再次感谢,但我仍然没有让它工作:原因似乎是我无法让composer收集所需的资源-我得到的只是运行该命令时的问号。另外,我在Linux环境下运行它,因为我试图构建相同的东西来共享Web服务器。为了测试,我还尝试了jut手动将linux版本的exe提取到服务器上,并运行相同的代码(相应地修改了exe的路径),但它似乎需要比手动安装更多的东西。似乎我们必须首先解决编写器问题。请在CLI上运行composer selfupdate
,然后运行composer diagnose
。diagnose
命令将对您的环境运行一些检查,以确保Composer正常工作。也许这说明了作曲家问题的原因(问号)。谢谢Jens的帮助!我最终得到了if(由于某种原因,还没有定义部分,但我现在用require'vendor/autoload.php'替换了它)。它不工作的原因是服务器对composer的某些设置不正确(detect_unicode不影响)。事实上,我也不得不更换服务器,但无论如何,现在它可以工作了。:)