前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python制作电子书

python制作电子书

作者头像
爱撒谎的男孩
发布2019-12-31 12:24:02
1.5K0
发布2019-12-31 12:24:02
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

  1. 1. python制作pdf电子书
    1. 1.1. 准备
      1. 1.1.1. 安装wkhtmltopdf
      2. 1.1.2. python安装依赖包
    2. 1.2. pdfkit的用法
      1. 1.2.1. 初级了解函数
      2. 1.2.2. 进阶
        1. 1.2.2.1. options
        2. 1.2.2.2. cover
        3. 1.2.2.3. css
    3. 1.3. 注意
    4. 1.4. 实战
      1. 1.4.1. 注意
    5. 1.5. 参考文章

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("<h1><a href="https://chenjiabing666.gituhb.io">陈加兵的博客</a></h1>",'demo.pdf') 这个是直接讲一个字符串转换成pdf格式的电子书,里面可以直接传一个字符串,也可以用html标签包裹这个字符串
  • pdfkit.from_file([file_name,],'demo.pdf') 这个是直接传入一个文件或者一个列表即是多个文件,不过这里传入的文件一般都是html格式的文件

进阶

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

options

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

代码语言:javascript
复制
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文本,在其中嵌入几张图片或者文字作为封面,然后写入出传入函数即可

代码语言:javascript
复制
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模板中定义内嵌的样式,或者直接用<link>引用外面的样式即可,本人亲试是可以的,具体的使用如下

代码语言:javascript
复制
css='demo.css'
pdfkit.from_file('demo.html','demo.pdf',options=options,cover=cover,css=css)

注意

  • 这里生成pdf的时候可能出现中文的乱码,请一定在html模板开头指定字体utf-8-> <meta charset="UTF-8">
  • 可能在爬取生成的时候会出现ascii错误,只需要在py文件开头写下:
代码语言:javascript
复制
import sys
import threading
reload(sys)
sys.setdefaultencoding('utf8')

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

实战

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

注意

参考文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python制作pdf电子书
    • 准备
      • 安装wkhtmltopdf
      • python安装依赖包
    • pdfkit的用法
      • 初级了解函数
      • 进阶
    • 注意
      • 实战
        • 注意
      • 参考文章
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档