如何将指定网页完整转PDF?含wkhtmltopdf问题及代码段打印需求
解决wkhtmltopdf只打印部分网页及代码段截断的问题
我之前也碰到过类似的情况,现代网页很多依赖JavaScript动态加载内容,加上代码块的横向滚动设计,确实容易让wkhtmltopdf输出不完整。试试下面的方案,应该能完美解决你的需求:
1. 先准备自定义CSS修复代码段截断
创建一个名为fix-code.css的文件,里面写入以下样式,强制代码块不隐藏溢出内容,或者让长代码自动换行:
/* 针对Spring指南里的代码块样式调整 */ pre, .code-snippet, .highlight { overflow: visible !important; width: auto !important; white-space: pre-wrap !important; /* 可选:让超长代码换行,避免横向溢出页面 */ }
2. 使用完整参数的wkhtmltopdf命令
把以下命令复制到终端执行,参数组合起来解决动态加载和内容截断问题:
wkhtmltopdf --enable-javascript --javascript-delay 3000 --disable-smart-shrinking --viewport-size 1280x1024 --no-stop-slow-scripts --user-style-sheet fix-code.css https://spring.io/guides/gs/maven/ "Building Java Projects with Maven.pdf"
每个参数的作用:
--enable-javascript:确保网页的JavaScript能正常运行,加载动态渲染的内容--javascript-delay 3000:等待3秒让页面完全加载(如果网页加载慢,可以改成5000即5秒)--disable-smart-shrinking:禁止工具自动收缩页面元素,避免部分内容被强制截断--viewport-size 1280x1024:模拟桌面端浏览器的视口大小,确保所有内容都能被完整渲染--no-stop-slow-scripts:你之前用过的参数,保留它防止因为脚本运行慢而提前停止加载--user-style-sheet fix-code.css:加载我们自定义的CSS,修复代码块的横向滚动条导致的内容截断问题
额外提示
如果执行后还是有少量内容没加载出来,可以尝试延长--javascript-delay的时间,比如调整为6000(6秒)。另外,有些网页会有懒加载的图片,这个等待时间也能帮助它们完成加载。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

