1、首先,必须安装一下pdfkit这个模块库,使用命令:pip install pdfkit,安装完成后即可,只需在代码写入一行代码,导入即可:

import pdffkit

2、接着,我这边是尝试将一个html文件转换为pdf的,我的代码是这样的,点击一个按钮时就转换,代码很简单,主要附上python代码:

def export_pdf(request):pdfkit.from_file('test.html', r'D:\test\' + id + '.pdf')

注意,这里面的html文件必须为绝对路径,要不然可能在项目中会找不到文件,报文件找不到错误,之后点击按钮触发这个函数,结果报如下错误:

No wkhtmltopdf executable found: "b''"
If this file exists please check that this process can read it. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

3、接着,处理这个问题,说是我没安装wkhtmltopdf,不过确实没安装,于是去https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf 安装windows底下的版本,安装完了之后再运行,还是报这个错误,好吧。

接下来就开始找解决办法了,改下代码如下:

def export_pdf(request):    path_wk = r'D:\SoftWare\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安装位置config = pdfkit.configuration(wkhtmltopdf=path_wk)pdfkit.from_file('test.html', r'D:\test' + id + '.pdf', configuration=config)

4、继续点击按钮,触发这个方法,发现报了一个这样的错误:

wkhtmltopdf reported an error:
Loading pages (1/6)
[>                                                           ] 0%
[======>                                                     ] 10%
[==============================>                             ] 50%
[============================================================] 100%
QPainter::begin(): Returned false
Error: Unable to write to destination
Exit with code 1, due to unknown error.

这是什么东西,看不懂,去查了好久都查不到要怎么解决。。。当然,未完待续:

5、于是看报错信息,报错信息如下所示:

主要看最后一行,点进去那个pdfkit.py,接着在to_pdf加个断点去调试一下,重新点击那个按钮,进来了,按F8键一步步走,如下图所示:

input为None去了,于是就可以知道传过的source有问题,此时的source是一个对象,还不是一个文件对象,就抛出异常了,因此代码有问题,改下代码如下:

def export_pdf(request):id = request.POST.get('id', '')path_wk = r'D:\SoftWare\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安装位置config = pdfkit.configuration(wkhtmltopdf=path_wk)with open('test.html') as f:pdfkit.from_file(f, r'D:\test' + id + '.pdf', configuration=config)

6、此时又报个错误了,错误如下:

'gbk' codec can't decode byte 0xa2 in position 153: illegal multibyte sequence

编码格式问题,于是修改一下代码如下:

def export_pdf(request):id = request.POST.get('id', '')path_wk = r'D:\SoftWare\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安装位置config = pdfkit.configuration(wkhtmltopdf=path_wk)with open('test.html', 'r', encoding='utf-8') as f:pdfkit.from_file(f, r'D:\test' + id + '.pdf', configuration=config)

7、继续点击按钮导出这个pdf,发现又报错了,又是之前那个错误:

wkhtmltopdf reported an error:
Loading pages (1/6)
[>                                                           ] 0%
[======>                                                     ] 10%
[==============================>                             ] 50%
[============================================================] 100%

8、最后,找了一天终于知道问题在哪里了,就出现在这一行代码里面:

pdfkit.from_file(f, r'D:\test' + id + '.pdf', configuration=config)

第二个参数的问题,不能指向本地的某个路径,还是什么情况,我修改一下代码如下:

def export_pdf(request):id = request.POST.get('id', '')path_wk = r'D:\SoftWare\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安装位置config = pdfkit.configuration(wkhtmltopdf=path_wk)with open('test.html', 'r', encoding='utf-8') as f:pdfkit.from_file(f, 'test.pdf', configuration=config)file = open('test.pdf', 'rb')response = FileResponse(file)response['Content-Type'] = 'application/pdf'response['Content-Disposition'] = 'attachment;filename="test.pdf"'return response

如果上面没返回一个HttpResponse的话,会报下面的错误:

The view test.export_pdf didn't return an HttpResponse object. It returned None instead.

9、这样便可以导出一个pdf文件了,并且直接下载到本地默认的地方,但是如果你得html有问题的话,导出来的就有问题,这里只是简单的一个测试代码而已。

10、以上就是我最近遇到的一些问题,记录一下,仅供大家学习参考,谢谢!

Python使用pdfkit、wkhtmltopdf将html转换为pdf错误记录文档相关推荐

  1. Word处理控件Aspose.Words功能演示:在 Python 中将 Word DOCX 或 DOC 转换为 PDF

    Word 到PDF是最流行和执行最广泛的文档转换之一.DOCX或DOC文件在打印或共享之前会转换为 PDF 格式.在本文中,我们将在 Python 中自动将 Word 转换为 PDF.步骤和代码示例将 ...

  2. 基于pdf2docx模块Python实现批量将PDF转Word文档(安装+完整代码教程)

    PDF文件是一种常见的文档格式,但是在编辑和修改时不太方便,因为PDF本质上是一种静态的文档格式.因此,有时候我们需要将PDF文件转换成Word格式,以便更好地编辑和修改文档.在本篇文章中,我们将介绍 ...

  3. 《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第13章 处理PDF和Word文档(1)】

    PDF 和 Word 文档是二进制文件. 1.  PDF 文档 PDF表示Portable Document Format(可移植文档格式),使用.pdf文件扩展名.用于处理PDF的模块是PyPDF2 ...

  4. wps的ppt怎么存html,如何将网页快速转换为WPS与WORD文档 ppt怎么转换成word文档

    导读:小编根据大家的需要整理了一份关于<如何将网页快速转换为WPS与WORD文档 ppt怎么转换成word文档>的内容,具体内容: 看到图文并茂的网页,想把它全部或部分转换为WPS或者WO ...

  5. 爬虫系列:读取 CSV、PDF、Word 文档

    上一期我们讲解了使用 Python 读取文档编码的相关问题,本期我们讲解使用 Python 处理 CSV.PDF.Word 文档相关内容. CSV 我们进行网页采集的时候,你可能会遇到 CSV 文件, ...

  6. 办公知识:有关如何PDF转Word文档的方法分享

    现在我们从网上下载的资料文献大部分都是PDF格式,由于PDF格式无法自由编辑的性质,想要获取文档中的内容只能一字一句复制粘贴过去,这样做不仅耽误工作进度还耗费精力. 这时候其实可以将PDF转换为可编辑 ...

  7. 最全的PDF转换Word文档方法汇总(珍藏版)

    相信很多人经常使用到Word文档和PDF文档,也有PDF转换Word的需求,不过转换PDF文档也是难倒了很多人了. 今天小编就总结了有关于PDF转Word文档的所有方法,希望对需要的朋友有一定的帮助. ...

  8. word文档转为PDF以及多种文档格式转换

    word文档转为PDF以及多种文档格式转换 项目地址:https://gitee.com/Jakewabc/word-of-pdf.git 相关案例: https://github.com/aspos ...

  9. solr从pdf、office文档中建立索引

    2015年05月28日 ⁄ hadoop ⁄ 评论数 1 使用solr从pdf.office文档中建立索引和从数据库中建立相似,只不过这里需要tika来解析这些文档.8.1 配置一个handler 这 ...

最新文章

  1. Tomcat的配置及优化
  2. 什么是物理层接口?—Vecloud 微云
  3. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计
  4. 音视频技术开发周刊 | 207
  5. 华为交换机配置Telnet步骤
  6. 3.Your First Machine Learning Model
  7. 10-Mybatis 多表查询之多对多
  8. PL/SQL Developer将Excel表格数据导入表格
  9. wifi卡慢延迟高_120平套三没网线,吃鸡延迟只有20ms,网件Orbi RBK50路由真香
  10. POI以SAX方式解析Excel2007大文件(包含空单元格的处理)
  11. mybatis update不生效_08. mybatis一级缓存和二级缓存
  12. 关于html的实训日志,满足你的甜蜜幻想, 《我与她的实习日志》登陆NS
  13. Ubuntu修改IP地址不生效解决办法
  14. 2015中国十大域名注册商排名
  15. Mycat全局序列号失效的诡异事件
  16. 关于PHP=5.5时密码哈希校验的使用案例
  17. Java入门第三天2-java循环嵌套
  18. 三原色是红黄蓝对吗_三原色是红黄蓝吗??
  19. matlab求解f非线性微分方程数值解,非线性﹑微分方程数值求解.PPT
  20. kubesphere离线安装从入门到放弃

热门文章

  1. Putty 重新启动 linux sqlserver服务
  2. 10.tesseract
  3. [TJOI2017]异或和
  4. cf Round 613
  5. http://sourceforge.net/projects/rtspdirectshow/
  6. 修改goods对ECshop的url路径进行优化
  7. 今天项目中遇到一个关于DataGrid的 ItemDataBound自动判断下拉列表默认值绑定问题...
  8. 用css实现星级评分效果
  9. HTMLCSS--使用CSS完成页面布局及排版(附案例代码)
  10. Linux驱动(6)--关于uboot