使用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
相关产品推荐
相关产品推荐

