我正在尝试在共享服务器(webhotel)上安装phpwkhtmltopdf。服务器已经安装了composer,我有SSH到服务器。但我对作曲家不太熟悉,所以我可能在这里犯了一些非常基本的错误。。
因此,我从以下位置下载了zip文件:https://github.com/mikehaertl/phpwkhtmltopdf并将其上的文件提取到名为phpwkhtmltopdf的服务器目录中。然后,打开该目录的SSH cd并运行composer需要mikehaertl/phpwkhtmltopdf,但我只在行首打了问号。对于我读到的问号,这可能是检测unicode的问题,所以我把它放在htaccess上:php_flag detect_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 mikehaertlwkhtmltoPdf; $pdf = new Pdf('/path/to/page.html'); if (!$pdf->saveAs('/path/to/page.pdf')) { echo $pdf->getError(); }
Uhm,并且您需要wkhtmltopdf二进制。。。但我想这不是问题所在。
以下是我的步骤:
- 我下载了wkhtmltopdfhttp://download.gna.org/wkhtmltopdf/0.12/0.12.3.2/wkhtmltox-0.12.3.2_msvc2013-win64.exe
- 并将其安装到
c:program fileswkhtmltopdf
中 -
现在可执行文件驻留在
c:program fileswkhtmltopdfbin
中 -
我创建了文件夹
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 mikehaertlwkhtmltoPdf; $pdf = new Pdf(array( 'binary' => 'C:Program Fileswkhtmltopdfbinwkhtmltopdf.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
就这样…:)