资讯专栏INFORMATION COLUMN

python制作pdf电子书

aisuhua / 1593人阅读

摘要:制作电子书准备制作电子书使用的是的这个库,是的封装包,因此在安装这个之前要安装安装下,不过这里安装的时候可能对应的版本不同,会出现错误,如果不行的话还请自己百度下,我安装的时候是可以的下的用户直接到官网下载稳定版本,然后直接安装即可,但是

python制作pdf电子书 准备

制作电子书使用的是pythonpdfkit这个库,pdfkitwkhtmltopdfPython封装包,因此在安装这个之前要安装wkhtmltopdf

安装wkhtmltopdf

sudo apt-get install wkhtmltopdf (ubantu下,不过这里安装的时候可能对应的版本不同,会出现错误,如果不行的话还请自己百度下,我安装的时候是可以的)

windows下的用户直接到wkhtmltopdf官网下载稳定版本,然后直接安装即可,但是安装之后需要注意的是一定要将其添加到环境变量中,否则会出现找不到路径的问题

python安装依赖包

以下都是我们需要用到的库

pip install requests

pip install BeautifulSoup4

pip install pdfkit

pdfkit的用法 初级了解函数

pdfkit.from_url([url,],"demo.pdf") 这个是直接传入一个url或者一个url列表,然后通过这个函数直接将其网页转换成demo.pdf,注意这里只能转换静态文本,如果使用js一些脚本的话是不能直接转换的

pdfkit.from_string("

陈加兵的博客

","demo.pdf") 这个是直接讲一个字符串转换成pdf格式的电子书,里面可以直接传一个字符串,也可以用html标签包裹这个字符串

pdfkit.from_file([file_name,],"demo.pdf") 这个是直接传入一个文件或者一个列表即是多个文件,不过这里传入的文件一般都是html格式的文件

进阶

当然知道这个是多么枯燥,生成的电子书书也不能添加各种的样式,下面我们将会介绍一些添加的样式的方法

options

这个参数是上面函数的可选参数,其中制定了一些选项,详情请见http://wkhtmltopdf.org/usage/wkhtmltopdf.txt, 你可以移除选项名字前面的 "--" .如果选项没有值, 使用None, Falseor ,* 作为字典值,例子如下:

    options = {
            "page-size": "Letter",
            "margin-top": "0.75in",
            "margin-right": "0.75in",
            "margin-bottom": "0.75in",
            "margin-left": "0.75in",
            "encoding": "UTF-8",
            "custom-header": [
                ("Accept-Encoding", "gzip")
            ],
            "cookie": [
                ("cookie-name1", "cookie-value1"),
                ("cookie-name2", "cookie-value2"),
            ],
            "outline-depth": 10,
        }
cover

这个参数是用来制作封面的,也是函数中的一个参数,如果想要实现的话可以先写一个html文本,在其中嵌入几张图片或者文字作为封面,然后写入出传入函数即可

options = {
            "page-size": "Letter",
            "margin-top": "0.75in",
            "margin-right": "0.75in",
            "margin-bottom": "0.75in",
            "margin-left": "0.75in",
            "encoding": "UTF-8",
            "custom-header": [
                ("Accept-Encoding", "gzip")
            ],
            "cookie": [
                ("cookie-name1", "cookie-value1"),
                ("cookie-name2", "cookie-value2"),
            ],
            "outline-depth": 10,
        }
cover="demo.html"
pdfkit.from_file("demo.html","demo.pdf",cover=cover,options=options)
css

这里的css也是函数中的一个可选参数,这个参数主要的作用作用就是在其中定义自己喜欢的样式,当然这里也可以传入一个列表,定义多个样式css文件,当然没有这个参数也可以实现定义自己的样式,只需要在自己的html模板中定义内嵌的样式,或者直接用引用外面的样式即可,本人亲试是可以的,具体的使用如下

css="demo.css"
pdfkit.from_file("demo.html","demo.pdf",options=options,cover=cover,css=css)
注意

这里生成pdf的时候可能出现中文的乱码,请一定在html模板开头指定字体utf-8->

可能在爬取生成的时候会出现ascii错误,只需要在py文件开头写下:

import sys
import threading
reload(sys)
sys.setdefaultencoding("utf8")

写入文件的时候不想python3一样可以指定编码格式,这里我使用的是codecs库,可以向python3一样指定其中的编码格式

实战

本人爬了廖雪峰老师的python2.7的教程,并且做成了电子书,截图如下

注意

这里并没有使用框架,如果有兴趣的朋友可以用框架写一个爬取全站的

这里的主要用到的是BeautifulSouprequests,详情可以看我的博客中的BeautifulSoup用法,后续还会更新requests的用法

源代码请见https://github.com/chenjiabing666/liaoxuefeng_pdfkit

参考文章

http://mp.weixin.qq.com/s/LH8nEFfVH4_tvYWo46CF5Q

http://www.cnblogs.com/taceywong/p/5643978.html

http://beautifulsoup.readthedocs.io/zh_CN/latest/#id44

更多文章请移步本人博客https://chenjiabing666.github.io/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44366.html

相关文章

  • URLOS应用开发入门案例——基于docker镜像制作一个可安装并可快速分发的gitbook应用

    摘要:是一个基于的命令行工具,可使用和来制作精美的电子书,并非关于的教程。使用制作电子书,必备两个文件和。今天,我就教大家如何使用快速制作应用,该应用是基于镜像制作,可以随意运行在任何一个安装有的主机上。首先安装安装完成后,地址栏输入即可访问。 GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书,GitBook 并...

    only_do 评论0 收藏0
  • Python爬虫之多线程下载程序类子书

    摘要:其页面如下那么我们是否可以通过来制作爬虫来帮助我们实现自动下载这些电子书呢答案是笔者在空闲时间写了一个爬虫,主要利用函数和多线程来下载这些电子书。   近段时间,笔者发现一个神奇的网站:http://www.allitebooks.com/ ,该网站提供了大量免费的编程方面的电子书,是技术爱好者们的福音。其页面如下: showImg(https://segmentfault.com/i...

    walterrwu 评论0 收藏0
  • 基于HTML5转换PDF子书阅读插件

    摘要:基于转换的电子书阅读插件部分项目一般都是以插件阅读文件,但存在阅读体验不理想的情况,所以参考手机上的电子书阅读器,使用国外的链接描述制作电子书示例。 基于HTML5转换PDF的电子书阅读插件 html5部分 项目一般都是以pdf.js插件阅读PDF文件,但存在阅读体验不理想的情况,所以参考手机上的电子书阅读器,使用国外的链接描述http://fliphtml5.com制作电子书示例。...

    objc94 评论0 收藏0
  • 基于HTML5转换PDF子书阅读插件

    摘要:基于转换的电子书阅读插件部分项目一般都是以插件阅读文件,但存在阅读体验不理想的情况,所以参考手机上的电子书阅读器,使用国外的链接描述制作电子书示例。 基于HTML5转换PDF的电子书阅读插件 html5部分 项目一般都是以pdf.js插件阅读PDF文件,但存在阅读体验不理想的情况,所以参考手机上的电子书阅读器,使用国外的链接描述http://fliphtml5.com制作电子书示例。...

    Rindia 评论0 收藏0
  • 一键下载:将知乎专栏导出成子书

    摘要:在知乎上,你一定关注了一些不错的专栏比如的编程教室。有需要的请在公众号里回复爬虫实战源码下载获取知乎专栏下载器源码,请在公众号的编程教室里回复关键字知乎除了代码外,本专栏打包好的也一并奉上,欢迎阅读与分享。 老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过 Python 和 爬虫 ,可以完成怎样的小工具。 在知乎上,你一定关注了...

    ivyzhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<