Ubuntu环境下生成PDF时margin设置失效问题求助
Ubuntu下pdfkit生成PDF边距失效的解决方法
先排查代码笔误
你代码里定义了边距参数的变量是options,但调用pdfkit.from_file()时传入的是options_tc,如果options_tc未定义或为空,相当于没传递边距参数,这会直接导致无边缘。先修正这个错误:pdfkit.from_file(file_read, file_write, options=options, configuration=config)测试wkhtmltopdf命令行是否正常
先绕开pdfkit,直接用wkhtmltopdf命令行生成PDF,验证参数是否生效:wkhtmltopdf --page-size A3 --orientation portrait --margin-left 20mm --margin-top 20mm /path/to/your/file.html /path/to/output.pdf如果命令行生成的PDF有边距,说明问题出在pdfkit的参数传递;如果还是无边距,那是wkhtmltopdf本身的问题,继续下一步。
检查wkhtmltopdf版本与依赖
Ubuntu默认源的wkhtmltopdf版本可能较老,对参数支持有问题,或者缺少渲染依赖:- 先安装完整依赖:
sudo apt update && sudo apt install wkhtmltopdf libxrender1 libfontconfig1 libxext6 - 如果版本过旧,可添加PPA安装最新稳定版:
sudo add-apt-repository ppa:linuxuprising/libwkhtmltopdf sudo apt update && sudo apt install wkhtmltopdf
- 先安装完整依赖:
调整pdfkit参数的键名格式
部分版本的pdfkit在Linux下对参数键名的格式要求不同,尝试把短横线改成下划线:options = { 'page-size': 'A3', 'orientation': 'portrait', 'margin_left': '20mm', 'margin_top': '20mm' }通过HTML样式强制设置边距
如果以上方法都无效,可直接在HTML文件中添加打印专用样式,绕过wkhtmltopdf的参数限制:<head> <style> @media print { body { margin: 20mm !important; padding: 0; } } </style> </head>
内容的提问来源于stack exchange,提问作者Mike Lvov
相关产品推荐
相关产品推荐

