wkhtmltopdf,0.12.6,警告:阻止访问文件

46 wkhtmltopdf

升级wkhtmltopdf到 时0.12.6,出现了这样的消息并且图像没有显示在目标 pdf 中:

    Warning: Blocked access to file /path/to/bpa_product_layering.png
Run Code Online (Sandbox Code Playgroud)

顺便说一句,相同的源 html 文件适用于 0.12.5

小智 78

这是由 0.12.6 版本中默认行为的更改引起的wkhtmltopdfwkhtmltopdf现在默认禁用本地文件访问。可以通过添加命令行参数来解决

--enable-local-file-access
Run Code Online (Sandbox Code Playgroud)

或组合

--disable-local-file-access --allow <path>
Run Code Online (Sandbox Code Playgroud)

  • @sanjay,我在Python中遇到了同样的问题,你可以以字典的形式传入选项。在这种情况下,您可以使用选项 `"disable-local-file-access":""`。 (6认同)
  • 请添加一个示例..我如何添加命令行参数?我正在使用 phthon (4认同)
  • 当你得到这个,当使用 pandoc 时,然后使用 `pandoc --pdf-engine-opt=--enable-local-file-access` (2认同)

L.J*_*L.J 18

对于使用laravel-snappy 的用户,请在 config\snappy.php 中添加“enable-local-file-access”选项:

'pdf' => [
        'enabled' => true,
        'binary'  => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'),
        'timeout' => false,
        'options' => [
            'enable-local-file-access' => true,
            'orientation'   => 'landscape',
            'encoding'      => 'UTF-8'
        ],
        'env'     => [],
    ],

    'image' => [
        'enabled' => true,
        'binary'  => env('WKHTML_IMG_BINARY', '/usr/local/bin/wkhtmltoimage'),
        'timeout' => false,
        'options' => [
            'enable-local-file-access' => true,
            'orientation'   => 'landscape',
            'encoding'      => 'UTF-8'
        ],
        'env'     => [],
    ],
Run Code Online (Sandbox Code Playgroud)

wkhtmltopdf 0.12.6 版本默认禁用本地文件访问


Shr*_*imp 9

只是用更正来碰撞这个线程,以防你尽管使用了同样的错误:

--enable-local-file-access
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在输入/输出文件之后指定此 cmd 行参数时不起作用,您必须在wkhtmltopdf.exe之后立即编写此参数。

所以

wkhtmltopdf.exe --enable-local-file-access input.html output.pdf
Run Code Online (Sandbox Code Playgroud)

而不是其他变体。