python制作pdf电子书

准备

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

安装wkhtmltopdf

  1. sudo apt-get install wkhtmltopdf (ubantu下,不过这里安装的时候可能对应的版本不同,会出现错误,如果不行的话还请自己百度下,我安装的时候是可以的)
  2. windows下的用户直接到wkhtmltopdf官网下载稳定版本,然后直接安装即可,但是安装之后需要注意的是一定要将其添加到环境变量中,否则会出现找不到路径的问题

python安装依赖包

  • pip install pdfkit

pdfkit的用法

  • 初级了解函数
  1. pdfkit.from_url([url,],'demo.pdf') 这个是直接传入一个url或者一个url列表,然后通过这个函数直接将其网页转换成demo.pdf,注意这里只能转换静态文本,如果使用js一些脚本的话是不能直接转换的
  2. pdfkit.from_string("https://chenjiabing666.gituhb.io">陈加兵的客
    ",'demo.pdf')这个是直接讲一个字符串转换成pdf格式的电子书,里面可以直接传一个字符串,也可以用html标签包裹这个字符串
  3. pdfkit.from_file([file_name,],'demo.pdf') 这个是直接传入一个文件或者一个列表即是多个文件,不过这里传入的文件一般都是html格式的文件
  • 进阶
  1. options这个参数是上面函数的可选参数,其中制定了一些选项,详情请见[wkhtmltopdf.org/usage/w](wkhtmltopdf.org/usage/w), 你可以移除选项名字前面的 '--' .如果选项没有值, 使用None, False or,*作为字典值,例子如下:
    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,
            }
    

  2. 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)
    

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

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

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

实战

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

拓展

这里并没有使用框架,如果有兴趣的朋友可以用框架写一个爬取全站的,这里的主要用到的是BeautifulSoup和requests,详情可以看我的博客中的python爬虫之BeautifulSoup。源代码请见pdfkit制作pdf电子书

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值