php - 如何安装 phpwkhtmltopdf

标签 php composer-php wkhtmltopdf

我正在尝试在共享服务器(网络酒店)上安装 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 文件夹中。

就是这样。


现在,为了使用它,您需要两件事:

  1. 您需要在项目引导期间包含 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';
    
  2. 好吧,最后,您需要使用该库编写一些代码:

    use mikehaertl\wkhtmlto\Pdf;
    
    $pdf = new Pdf('/path/to/page.html');
    
    if (!$pdf->saveAs('/path/to/page.pdf')) {
        echo $pdf->getError();
    }
    

嗯,你需要 wkhtmltopdf 二进制文件...但我想这不是问题。


这些是我的步骤:

  1. 我下载了 wkhtmltopdf http://download.gna.org/wkhtmltopdf/0.12/0.12.3.2/wkhtmltox-0.12.3.2_msvc2013-win64.exe
  2. 并将其安装到c:\program files\wkhtmltopdf
  3. 现在可执行文件位于c:\program files\wkhtmltopdf\bin

  4. 我创建了文件夹pdf-test

  5. 我在 CLI 上运行了命令 composer require mikehaertl/phpwkhtmltopdf
  6. 我创建了一个包含以下内容的文件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();
    }
    
  7. 然后我运行了php makepdf.php

  8. 最终生成了文件page.pdf

就是这样...:)

关于php - 如何安装 phpwkhtmltopdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568675/

相关文章:

php - 在 $_POST 之后回显内爆数组时删除多余的逗号

php - Composer : Allowed memory size error when installing package

java - 如何在 Java 中使用 wkhtmlpdf 将 HTML 文件转换为 PDF

php - 查找项目中需要的所有 PEAR 包(源代码)

python - django-wkhtmltopdf 给出 "[Error 2] The system cannot find the file specified"?

python-3.x - python pdfkit错误wkhtmltopdf以非零代码-6退出

php - REGEX 如何重复提取模式?

php - 回滚文件移动、文件夹删除和 mysql 查询

php - Laravel 从表列表/数据库中删除项目

php - 错误 [RuntimeException] 无法扫描 "database/seeds"内的类