![]() | 1 harrozze 2023-07-06 23:58:24 +08:00 python3-xhtml2pdf/stable 0.2.5-3 all A library for converting HTML into PDFs using ReportLab (Python 3 module) |
3 dcsuibian 2023-07-07 00:11:21 +08:00 puppeteer ? |
![]() | 4 deacyn OP @dcsuibian 不知道是使用方式不对还是怎么着,发现使用这个生成的 pdf 比 wkhtmltopdf 工具大一倍,尤其是在有图片的时候。 |
5 justNoBody 2023-07-07 00:23:11 +08:00 via iPhone ![]() chrome 无头模式最佳 google-chrome --headless --disable-gpu --print-to-pdf=$output_file $html_file |
![]() | 6 qsnow6 2023-07-07 00:31:53 +08:00 调用 Chrome 的打印功能就行 |
![]() | div class="fr"> 7 learningman 2023-07-07 00:38:28 +08:00 via Android 你要支持 js ,那最好还是无头浏览器 |
![]() | 8 deacyn OP @justNoBody 之前测试了一下 puppeteer ,发现生成的文件太大了,有什么办法解决吧吗 |
9 jifengg 2023-07-07 08:49:16 +08:00 前段时间浅浅研究过这俩,wkhtmltopdf 貌似有些支持不是很好,后来用 chrome headless 出来的都挺好,也支持 js 渲染。 不过最好是用 puppeteer ,命令行的方式有些参数不生效。 至于楼主说的体积大一倍,建议楼主可以看看两个 pdf 放大之后,图片清晰度是否一样。如果不一样可以看看哪里有设置 dpi 之类的。 |
![]() | 10 joooooker21 2023-07-07 09:05:05 +08:00 wkhtmltopdf 也可以运行在服务器上 |
11 jiejia 2023-07-07 09:41:42 +08:00 PhantomMagick |
![]() | 12 NealDing 2023-07-07 09:49:34 +08:00 @deacyn puppeteer 应该是目前最强大易用的了,如果有大文件的问题建议把生成功能模块建个 repo 发一下,大家一起帮忙看看 |
![]() | 13 dcdlove 2023-07-07 10:05:16 +08:00 只要系统安装有谷歌浏览器就可以 --print-to-pdf-no-header 隐藏打印的页头脚 google-chrome --headless --disable-gpu --print-to-pdf-no-header --print-to-pdf=test.pdf t/954703#reply10 |
![]() | 14 dcdlove 2023-07-07 10:09:56 +08:00 @deacyn puppeteer 最后调用的还是 chrome 的无头模式 只是定死了一个浏览器内核 所以最好还是直接调用 chrome 输出 最好,想用那个版本就装那个版本 服务端也能调用 C:\Program Files\Google\Chrome\Application\chrome.exe --headless --print-to-pdf-no-header --print-to-pdf="test.pdf" --disable-gpu "http://www.baidu.com" |
![]() | 15 leroy20317 2023-07-07 10:12:02 +08:00 生成 pdf 我用的也是 puppeteer 就是在服务器中运行时间长了之后内存占用一直在增加 不知道是配置有问题还是这个本身就这样 只能定时去重启服务 |
16 Eureka0007 2023-07-07 14:02:53 +08:00 |
17 forQ 2023-07-07 14:28:25 +08:00 playwright |
20 Breacher 2023-07-07 15:43:44 +08:00 via iPhone ![]() 前段时间刚做了个 HTML 生成 PDF 发票的功能,调研了 wkhrmltopdf ,发现它好久没更新了,有些 JS 特性它不支持。最后用了 Gotenburg ,一个打包了无头 Chrome 和常用字体的开箱即用的方案。 |
23 adnoh 2023-07-07 16:37:54 +08:00 via Android 用过 phantomjs |
![]() | 24 leroy20317 2023-07-07 16:39:54 +08:00 @yjd 确实是的 重复创建耗资源而且有时候会出现丢失 所以才提前创建几个 page 所有的转换任务都只在这几个 page 中渲染转换 可能就是这样才会内存一直在叠加吧 |
26 yh648559276 2023-07-07 17:50:25 +08:00 @dcdlove 为什么我执行没有本地没有找到 test.pdf |
![]() | 27 dcdlove 2023-07-07 19:33:14 +08:00 @yh648559276 可以写绝对地址,相对路径会在浏览器 bin 目录下 |
![]() | 29 zero3412 2023-07-08 15:11:43 +08:00 @Breacher 感觉这个挺好的,麻烦点在需要独立服务器 正好我也有个项目有这需求,目前使用的是 mPDF ,支持度一般般,要求别太高的都 OK |
30 solgh 2024-03-20 11:52:12 +08:00 我目前也是用 mPDF , puppeteer 也用,puppeteer 直接 HTML 面打印出的效果是非常好的,但是生成出的 PDF 容高度和原 HTML 高度相差是有差 |