You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyhtml2pdf转换公司U盘HTML为PDF遇ConnectionError求助

解决网络U盘HTML转PDF的ConnectionError问题

问题描述

尝试将公司网络U盘中的HTML文件转换为PDF,使用pyhtml2pdf时持续报错,代码及错误信息如下:

代码:

from pyhtml2pdf import converter
filepath_html='U:/Data/test.html'
path = os.path.abspath(filepath_html)
converter.convert(f'{path}', 'sample.pdf')

报错信息:

714 # Make the request on the httplib connection object.
--> 715 httplib_response = self._make_request(
    716     conn,
    717     method,
    718     url,
    719     timeout=timeout_obj,
    720     body=body,
    721     headers=headers,
    722     chunked=chunked,
    723 )
...
---> 35     raise exceptions.ConnectionError(f"Could not reach host. Are you offline?")
     36 self.validate_response(resp)
     37 return resp

ConnectionError: Could not reach host. Are you offline?

原因

pyhtml2pdf依赖浏览器加载资源,但它会把网络U盘路径(如U:/)当作网络URL处理,这类路径无法被浏览器识别为有效访问地址,导致连接失败。

解决办法

1. 先复制文件到本地磁盘

把网络U盘中的HTML文件复制到本地目录,再进行转换,避免网络路径识别问题:

import shutil
import os
from pyhtml2pdf import converter

# 复制网络U盘文件到本地
source = 'U:/Data/test.html'
local_dest = 'C:/temp/test.html'
shutil.copy(source, local_dest)

# 执行转换
converter.convert(os.path.abspath(local_dest), 'sample.pdf')

2. 使用支持本地文件的转换库

换用直接读取本地文件内容的库,比如weasyprint或pdfkit:

用weasyprint:

from weasyprint import HTML

HTML('U:/Data/test.html').write_pdf('sample.pdf')

安装命令:pip install weasyprint

用pdfkit:

import pdfkit

pdfkit.from_file('U:/Data/test.html', 'sample.pdf')

安装命令:pip install pdfkit,需额外安装wkhtmltopdf并配置系统环境变量。

3. 给路径添加本地文件协议前缀

给网络U盘路径加上file://前缀,让浏览器识别为本地文件:

from pyhtml2pdf import converter
import os

filepath_html = 'U:/Data/test.html'
# 转换为浏览器可识别的本地文件URL
local_url = f'file:///{os.path.abspath(filepath_html).replace("\\", "/")}'
converter.convert(local_url, 'sample.pdf')

注意:确保网络U盘已正常挂载,且当前用户有读取权限。

内容的提问来源于stack exchange,提问作者roudan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:39:51