鱼C论坛

 找回密码
 立即注册
查看: 905|回复: 1

[已解决]用vscode的live server启动了本地http server, 外部css正常。再用pdfkit转html到pdf,

[复制链接]
发表于 2023-5-22 16:19:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
最佳答案
2023-5-22 16:22:13
这个错误表示  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  到最新版本也许可以帮助解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-22 16:22:13 | 显示全部楼层    本楼为最佳答案   
这个错误表示  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  到最新版本也许可以帮助解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表