|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
用vscode的live server启动了本地http server, 浏览器里看本地html正常。再用pdfkit转本地html到pdf,前几个能转成功,几个以后就不行了,出以下告警。 本地html文件名没有怪字符是全英文的。 啥原因呢?
是不是要用python本身的http server才行?
003_2304-the_good_fox-a_new_fable-FKB_ge_cn 003_2304-the_good_fox-a_new_fable-FKB_ge_cn.html
http://127.0.0.1:5500/cc_picture_book2-1-100encnhtml/003_2304-the_good_fox-a_new_fable-FKB_ge_cn.html
003_2304-the_good_fox-a_new_fable-FKB_ge_cn
------------------------------------------------------
003_2304-the_good_fox-a_new_fable-FKB_ja_cn 003_2304-the_good_fox-a_new_fable-FKB_ja_cn.html
http://127.0.0.1:5500/cc_picture_book2-1-100encnhtml/003_2304-the_good_fox-a_new_fable-FKB_ja_cn.html
003_2304-the_good_fox-a_new_fable-FKB_ja_cn
------------------------------------------------------
Traceback (most recent call last):
File "c:\Users\dengz\Downloads\bad\up\cc_picture_book2-get140\cc_picture_book2-1-100encnhtml\12_html2pdf-1.py", line 48, in <module>
pdfkit.from_url(link_full, "{}.pdf".format(mainfilename), configuration=config, options=wkhtmltopdf_options)
File "C:\Python310\lib\site-packages\pdfkit\api.py", line 27, in from_url
return r.to_pdf(output_path)
File "C:\Python310\lib\site-packages\pdfkit\pdfkit.py", line 201, in to_pdf
self.handle_error(exit_code, stderr)
File "C:\Python310\lib\site-packages\pdfkit\pdfkit.py", line 155, in handle_error
raise IOError('wkhtmltopdf reported an error:\n' + stderr)
OSError: wkhtmltopdf reported an error:
Exit with code 1 due to network error: ContentNotFoundError
这个错误表示 wkhtmltopdf 在尝试访问网址并将其转换为 PDF 时遇到了一个网络错误,具体是 ContentNotFoundError,这表明它试图访问的某个资源(如一个 CSS 文件或者一个图片)在当前的服务器上没有找到。
可能的原因有几个:
1. wkhtmltopdf 在访问资源时使用的路径可能是错误的。如果你的 HTML 文档中的资源链接是相对路径,确保这些路径在服务器上是正确的。比如,你可能需要检查你的 CSS 和图片链接是否正确。
2. 如果你的本地服务器在某个时候停止或重启,那么 wkhtmltopdf 可能无法从该服务器上找到需要的资源。你可以检查一下你的服务器是否稳定运行,特别是在你运行你的 Python 脚本的时候。
3. 当使用 wkhtmltopdf 时,如果你的 CSS 文件或者其他资源需要一些时间来加载,那么可能会发生错误,因为 wkhtmltopdf 会在资源加载完之前就尝试创建 PDF。你可以尝试在 pdfkit 的 options 参数中设置一个更长的延迟时间,例如 'no-stop-slow-scripts': True 或 'javascript-delay': 1000 。
4. 有时,你可能需要确保你的服务器正在监听 wkhtmltopdf 试图访问的端口。在你提供的例子中,这个端口是 5500 。
你提到的关于使用 Python 自身的 HTTP 服务器,这个可以试试,因为这样可以更好地控制服务器的行为,但是这可能并不能解决你的问题,特别是如果问题是由于上述原因之一引起的。
另外,尝试更新 wkhtmltopdf 到最新版本也许可以帮助解决问题。
|
|