python pdfkit 中文乱码问题的解决方案

 更新时间:2021年03月08日 10:23:26   作者:piaotiejun  
这篇文章主要介绍了python pdfkit 中文乱码问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

使用python pdfkit生成pdf文件中遇到中文乱码问题

1.生成的文件名不能带有中文字符

2.生成的pdf内容中文为乱码

生成的文件名不能带有中文字符

解决方法:

我暂时想到的处理方式是先生成英文文件名,再将这个文件重命名为中文的文件名

#coding=utf8
import os
import pdfkit
from uuid import uuid1
ret = '<html><head><meta charset="UTF-8"></head><body><h1>测试pdf内容部分</h1></body></html>'.decode('utf8')
file_name = str(uuid1())
pdfkit.from_string(ret, file_name) # file_name不能带有中文 如果有会报错
file_name_new = '测试.pdf'
os.rename(file_name, file_name_new)

生成的pdf内容中文为乱码

原因1:

因为pdfkit生成pdf功能其实调用的是webkit的子模块wkhtmltopdf(通过命令行方式),所以pdfkit生成中文乱码其实是wkhtmltopdf中文乱码导致的;而wkhtmltopdf中文乱码是因为系统中不存在中文字体导致的

解决方法:

在系统中添加中文字体

我的本地电脑是ubuntu14.04的字体文件保存在/usr/share/fonts下(包含了中文字体文件具体哪一个我也不知道汗。),我的服务器是redhat系统(没有中文字体),所以在我的电脑上操作如下:

cd /usr/share/fonts
zip -r fonts.zip ./*
scp fonts.zip 服务器用户名@服务器ip:/usr/share/fonts

在服务器上操作如下:

cd /usr/share/fonts
unzip fonts.zip
fc-cache -fv
fc-list # 查看新添加的字体

你需要找一台有安装了中文字体的电脑复制一份字体文件(就是/usr/share/fonts下的文件),然后如我以上操作就可以了。

原因2:

需要在html的字符集设置为utf8

<head><meta charset="UTF-8"></head>

补充:python写入html文件中文乱码-解决办法

使用open函数将爬虫爬取的html写入文件,有时候在控制台不会乱码,但是写入文件的html中的中文是乱码的

案例分析

看下面一段代码:

# 爬虫未使用cookie
from urllib import request
if __name__ == '__main__':
 url = "http://www.renren.com/967487029/profile"
 rsp = request.urlopen(url)
 html = rsp.read().decode()
 with open("rsp.html","w")as f:
 # 将爬取的页面
 print(html)
 f.write(html)

看似没有问题,并且在控制台输出的html也不会出现中文乱码,但是创建的html文件中

解决方案

使用open方法的一个参数,名为encoding=” “,加入encoding=”utf-8”即可

# 爬虫未使用cookie
from urllib import request
if __name__ == '__main__':
 url = "http://www.renren.com/967487029/profile"
 rsp = request.urlopen(url)
 html = rsp.read().decode()
 with open("rsp.html","w",encoding="utf-8")as f:
 # 将爬取的页面
 print(html)
 f.write(html)

运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Python实现多个视频合成一个视频的功能

    Python实现多个视频合成一个视频的功能

    这篇文章主要介绍了可以将多个视频拼接为一个视频的Python工具代码,文中的代码讲解详细,对我们学习Python有一定的帮助,快来跟随小编一起学习一下吧
    2021-12-12
  • python飞机大战游戏实例讲解

    python飞机大战游戏实例讲解

    在本篇文章里小编给大家整理的是一篇关于python飞机大战游戏实例讲解,有兴趣的朋友们可以参考下。
    2020-12-12
  • python进程池的简单实现

    python进程池的简单实现

    本文主要介绍了python进程池的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python调用外部程序的实操步骤

    python调用外部程序的实操步骤

    在本文里小编给大家分享了关于python如何调用外部程序的步骤和相关知识点,需要的朋友们学习下。
    2019-03-03
  • Python Numpy库安装与基本操作示例

    Python Numpy库安装与基本操作示例

    这篇文章主要介绍了Python Numpy库安装与基本操作,简单介绍了Numpy库的基本功能、并结合实例形式分析了基于Numpy库的数组与矩阵相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 基于SpringBoot构造器注入循环依赖及解决方式

    基于SpringBoot构造器注入循环依赖及解决方式

    这篇文章主要介绍了基于SpringBoot构造器注入循环依赖及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python教程之基本运算符的使用(下)

    Python教程之基本运算符的使用(下)

    Python运算符通常用于对值和变量执行操作。这些是用于逻辑和算术运算的标准符号。在本文中,我们将研究运算符的优先级和关联性,感兴趣的可以了解一下
    2022-09-09
  • 在Linux命令行中运行Python脚本的流程步骤

    在Linux命令行中运行Python脚本的流程步骤

    Python是一种高级编程语言,被广泛应用于数据科学、机器学习、Web 开发等领域,在Linux操作系统中,Python是一个默认安装的解释器,用户可以通过命令行界面(CLI)来运行Python脚本,在本文中,我们将详细介绍如何在Linux命令行中运行Python脚本,需要的朋友可以参考下
    2023-11-11
  • 通过Python实现电脑定时关机的两种方法

    通过Python实现电脑定时关机的两种方法

    这篇文章主要介绍了分别利用PyQT5和Tkinter实现电脑的定时关机小程序,文中的示例代码讲解详细,对我们学习Python有一定的帮助,快跟随小编一起学习一下吧
    2021-12-12
  • 使用python绘制随机地形地图

    使用python绘制随机地形地图

    Python 作为一门功能强大的编程语言,在地图生成方面有着丰富的资源和库,本文将介绍如何使用 Python 中的一些工具和库来绘制随机地形地图,感兴趣的小伙伴可以跟着小编一起来看看
    2024-04-04

最新评论