如何安装phpwkhtmltopdf

时间:2016-06-01 12:28:20

标签: php composer-php wkhtmltopdf

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

所以,我从以下网址下载了zip文件: https://github.com/mikehaertl/phpwkhtmltopdf  并将其上的文件提取到服务器到名为phpwkhtmltopdf的目录。 然后,打开SSH转到该目录并运行composer需要mikehaertl / phpwkhtmltopdf,但我只能在行开头得到问号。 对于问号我读到它可能是检测unicode的问题,所以我放置到htaccess:php_flag detect_unicode关闭,它似乎现在在本地关闭。

但仍有问号,php wkhtmltopdf未安装。如何安装?

1 个答案:

答案 0 :(得分:3)

问题是您要提取包mikehaertl/phpwkhtmltopdf两次:

  • 首先,您取出拉链并将其解压缩(手动安装)。
  • 然后,您运行Composer来要求它(通过Composer安装)。

请决定如何安装软件包!

如果要使用Composer安装软件包,只需在干净的项目文件夹中运行composer require mikehaertl/phpwkhtmltopdf即可。

然后,Composer将获取包并将其放入/vendor文件夹。

就是这样。

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

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

    use mikehaertl\wkhtmlto\Pdf;
    
    $pdf = new Pdf('/path/to/page.html');
    
    if (!$pdf->saveAs('/path/to/page.pdf')) {
        echo $pdf->getError();
    }
    
  3. 嗯,你需要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
    9. 就是这样......:)