我正在尝试在共享服务器(网络酒店)上安装 phpwkhtmltopdf。服务器已经安装了 Composer,并且我可以通过 SSH 连接到服务器。但我对 Composer 不太熟悉,所以我可能在这里做了一些非常基本的错误..
所以,我已经从以下位置下载了 zip 文件: https://github.com/mikehaertl/phpwkhtmltopdf 并将其上的文件提取到服务器上名为 phpwkhtmltopdf 的目录。 然后,打开 SSH cd-ing 到该目录并运行 Composer require mikehaertl/phpwkhtmltopdf 但我只在行首得到问号。 对于问号,我读到这可能是检测unicode的问题,所以我将htaccess:php_flag detector_unicode Off设置为Off,看来它现在在本地已关闭。
但是仍然有问号,并且 php wkhtmltopdf 没有安装。如何安装?
最佳答案
问题是您正在获取包mikehaertl/phpwkhtmltopdf
两次:
- 首先,您获取 zip 并将其解压(手动安装)。
- 然后,您运行 Composer 来要求它(通过 Composer 安装)。
请决定您要如何安装该软件包!
当您想使用 Composer 安装软件包时,只需在干净的项目文件夹中运行 composer require mikehaertl/phpwkhtmltopdf
即可。
Composer 随后会获取该包并将其放入 /vendor
文件夹中。
就是这样。
现在,为了使用它,您需要两件事:
您需要在项目引导期间包含 Composers 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(); }
嗯,你需要 wkhtmltopdf 二进制文件...但我想这不是问题。
这些是我的步骤:
- 我下载了 wkhtmltopdf http://download.gna.org/wkhtmltopdf/0.12/0.12.3.2/wkhtmltox-0.12.3.2_msvc2013-win64.exe
- 并将其安装到
c:\program files\wkhtmltopdf
现在可执行文件位于
c:\program files\wkhtmltopdf\bin
我创建了文件夹
pdf-test
- 我在 CLI 上运行了命令
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
就是这样...:)
关于php - 如何安装 phpwkhtmltopdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568675/