Snap版Chromium无头模式执行print-to-pdf提示文件已写入但实际未生成文件
Snap版Chromium无头模式执行print-to-pdf提示文件已写入但实际未生成文件
我之前碰过Snap应用的沙箱权限坑,你的情况大概率是Snap的文件系统隔离机制在搞鬼!
先给你理清楚原因:Snap版Chromium是跑在沙箱环境里的,它的文件系统和宿主系统是隔离开的。你命令里指定的/tmp/TEST.pdf,其实是Chromium沙箱内部的临时目录,不是你在Ubuntu系统里直接访问的那个全局/tmp文件夹。所以Chromium确实输出了PDF,但文件不在你以为的位置,自然找不到。
给你两个实用的解决方案:
- 方案一:改用双方都能访问的路径(推荐)
Snap应用默认允许访问用户家目录,你可以把输出路径改成家目录下的位置,比如$HOME/TEST.pdf。修改后的命令如下:
chromium --headless --disable-gpu --print-to-pdf="$HOME/TEST.pdf" https://www.google.com --no-sandbox
执行完后直接去你的用户家目录(比如/home/你的用户名/)就能找到生成的PDF了。
- 方案二:访问沙箱内部的/tmp目录
如果一定要用/tmp路径,你可以去Chromium Snap的沙箱内部临时目录找文件,这个路径一般是/var/snap/chromium/common/tmp/,生成的TEST.pdf就藏在这里。不过这个路径比较隐蔽,日常使用还是方案一更方便。
另外补充一句:你看到的Fontconfig警告、Floss和Sandbox相关的提示都不是导致PDF找不到的原因,完全可以忽略它们,核心问题就是Snap的沙箱隔离限制。
备注:内容来源于stack exchange,提问作者dagan
相关产品推荐
相关产品推荐

