我正在尝试在共享服务器(webhotel)上安装phpwkhtmltopdf。服务器已经安装了composer,我有SSH到服务器。但我对作曲家并不太熟悉,所以我可能会在这里做一些非常基本的错误..
所以,我从以下网址下载了zip文件: https://github.com/mikehaertl/phpwkhtmltopdf 并将其上的文件提取到服务器到名为phpwkhtmltopdf的目录。 然后,打开SSH转到该目录并运行composer需要mikehaertl / phpwkhtmltopdf,但我只能在行开头得到问号。 对于问号我读到它可能是检测unicode的问题,所以我放置到htaccess:php_flag detect_unicode关闭,它似乎现在在本地关闭。
但仍有问号,php wkhtmltopdf未安装。如何安装?
答案 0 :(得分:3)
问题是您要提取包mikehaertl/phpwkhtmltopdf
两次:
请决定如何安装软件包!
如果要使用Composer安装软件包,只需在干净的项目文件夹中运行composer require mikehaertl/phpwkhtmltopdf
即可。
然后,Composer将获取包并将其放入/vendor
文件夹。
就是这样。
现在,为了使用它,你需要两件事:
您需要在项目的引导期间包含Composers Autoloader。这样,当您访问包/库类时,Autoloader将加载库。
// 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:\program files\wkhtmltopdf\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();
}
然后我跑了php makepdf.php
page.pdf
就是这样......:)