格式转化工具集之pdfkit错误

本文解析了使用pdfkit将URL转换为PDF时遇到的错误,指出文件名中的特殊字符是罪魁祸首,并分享了如何通过正则表达式清洗文件名来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

格式转化工具集之pdfkit错误: raise IOError("wkhtmltopdf exited with non-zero code {0}. error:\n{1}"

一、报错

在这里插入图片描述

代码:

OSError: wkhtmltopdf exited with non-zero code 1. error:

这是一个不明原因的报错

二、解决方法

最终发现这源于转换的pdf文件名中不能有特殊字符

转换代码:

inport pdfkit
pdfkit.from_url(url, file)

是指这个file不能有特殊字符
如file为:

讲座报道 | 王燕玲:《认罪认罚从宽制度下智能精准量刑的理论与实践》.pdf

时就会报错
使得输出的pdf文件名没有特殊字符,通过正则提取中文即可

title = "".join(re.findall(r'[\u4e00-\u9fa5]+',artical["article"]["title"]))

这个title就是文件名

完整代码:这是我对搜狗微信文章所作的url转pdf保存,前期已经获取url并保存到txt中了

import os,glob
import pprint
import re

import pdfkit
import json
from tqdm import tqdm

def url_to_pdf():
 for i in tqdm(glob.glob(os.path.join(r"J:\PyCharm项目\package_test_\搜狗文章爬虫\artical", "*"))):
    with open(i, "r")as f:
        artical = json.load(f)
        # print(artical)
        url = artical["article"]["url"]

        title = "".join(re.findall(r'[\u4e00-\u9fa5]+',artical["article"]["title"]))
        print(title,type(title))
        print(url)
        if url:
            path = os.path.dirname(__file__) + "\\pdf文章"
            if not os.path.exists(path):
                os.makedirs(path)
            file =  path+r"\\{}.pdf".format(title)
            print(file)
            pdfkit.from_url(url, file)
url_to_pdf()

三、解决过程

(一)url

我首先怀疑是url格式的问题
因为url是这样的,中间有个*
在这里插入图片描述
这是一个完整的url,但是*后面的不能和前面一样成蓝色,是否是格式出了问题

于是通过requests测试,结果没有问题

(二)pdfkit版本

于是我就怀疑是不是pdfkit版本的问题,因为pdfkit已经是2017年的了,长期没有更新,但是wkhtmltopdf 一直在更新,于是怀疑是不是版本不匹配,结果换了版本也是一样。

(三)契机

在作wkhtmltopdf 测试时将file 命名为1.pdf结果同样的url竟然可以转换,于是是文件名的可能性就大了,接着便通过replace对文件名进行清洗,发现是其中的"|"符号导致的,继续进行后续的pdf转换,继续报错,按照上述步骤继续替换发现特殊"导致的
于是最终得出结论,这是特殊符号导致的问题,通过正则表达式进行中文匹配后输出文件名就成功了
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值