如何安装 phpwkhtmltopdf

How to install phpwkhtmltopdf

我正在尝试在共享服务器 (webhotel) 上安装 phpwkhtmltopdf。服务器已经安装了 composer,并且我有 SSH 到服务器。但我不太熟悉作曲家,所以我可能在这里做一些非常基本的错误..

所以,我已经从以下位置下载了 zip 文件: https://github.com/mikehaertl/phpwkhtmltopdf 并将其上的文件提取到服务器到名为 phpwkhtmltopdf 的目录中。 然后,打开 SSH cd-ing 到那个目录和 运行 composer require mikehaertl/phpwkhtmltopdf 但我只在行首得到问号。 对于问号,我读到它可能是检测 unicode 的问题,所以我将 htaccess: php_flag detect_unicode Off 并且它现在似乎在本地关闭。

但是仍然有问号,php wkhtmltopdf 没有安装。如何安装?

问题是您正在获取包 mikehaertl/phpwkhtmltopdf 两次:

  • 首先,您获取了 zip 文件并将其解压缩(手动安装)。
  • 然后,您 运行 Composer 需要它(通过 Composer 安装)。

请决定您要如何安装包!


当你想用 Composer 安装包时,你只需要 运行 composer require mikehaertl/phpwkhtmltopdf 在一个干净的项目文件夹中。

Composer 将提取包并将其放入 /vendor 文件夹。

就是这样。


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

  1. 您需要在 bootstrap 项目期间包含 Composers Autoloader。这使得当您访问 package/library 类.

    时,自动加载器将加载库
    // 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. i 运行 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

就是这样...:)