美文网首页我爱编程
python 学习笔记 (pdf)

python 学习笔记 (pdf)

作者: 我是帅气的石头 | 来源:发表于2018-06-11 23:08 被阅读0次

pdfkit模块

python中将html转化为pdf的常用工具是Wkhtmltopdf工具包,在python环境下,pdfkit是这个工具包的封装类。如何使用pdfkit以及如何配置呢?分如下几个步骤。

1,下载wkhtmltopdf安装包,并且安装到电脑上,在系统Path变量中添加wkhtmltopdf的bin路径,以便于pdfkit的调用。

下载地址:https://wkhtmltopdf.org/downloads.html

2,在pycharm中安装pdfkit库

pip install pdfkit

3,在pycharm中安装whtmltopdf库

这个和第一步中的安装包是两个东西,请区别开来

pip install wkhtmltopdf

用法

简单用法

import pdfkit

pdfkit.from_url("https://www.baidu.com/", "out1.pdf")
pdfkit.from_file('test.html','out2.pdf')
pdfkit.from_string('Hello!','out3.pdf')

添加配置

#添加配置
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'),
    ],
    'no-outline': None
}

pdfkit.from_url('http://www.apelearn.com/study_v2/', 'out7.pdf',options=options)

我们还可以传入任何html标签:

body = """
    <html>
      <head>
        <meta name="pdfkit-page-size" content="Legal"/>
        <meta name="pdfkit-orientation" content="Landscape"/>
      </head>
      Hello World!
      </html>
    """

pdfkit.from_string(body, 'out.pdf') #with --page-size=Legal and --orientation=Landscape

例子:将http://www.apelearn.com/study_v2/ 的跟啊铭学linux的电子书生成pdf保存到本地

import codecs
import os
import sys

import pdfkit
import requests

base_url = 'http://www.apelearn.com/study_v2/'

if not os.path.exists("aming"):
    os.mkdir("aming")

os.chdir("aming")
s = requests.session()

for i in range(1,27):
    url = base_url+'chapter'+str(i)+'.html'
    print(url)
    file=str(i) + '.pdf'
    print(file)
    config = pdfkit.configuration(wkhtmltopdf=r"E:\wkhtmltopdf\bin\wkhtmltopdf.exe")
    try:
        pdfkit.from_url(url,file)
    except:
        continue

用PyPDF2 合并所有的pdf


# 合并所有的pdf到一个pdf下

import codecs

import PyPDF2
import os

files = list()
for fileName in os.listdir("aming"):
    if fileName.endswith(".pdf"):
        files.append(fileName)

newFiles = sorted(files, key=lambda d: int(d.split(".pdf")[0]))  #排序 按数字大小
print(newFiles)


os.chdir("aming")
pdfWriter = PyPDF2.PdfFileWriter()#生成一个空白的pdf
for item in newFiles:
    pdfReader = PyPDF2.PdfFileReader(open(item, "rb")) #读取pdf文件
    for page in range(pdfReader.numPages):
        pdfWriter.addPage(pdfReader.getPage(page))   #获取所有的总页数

with codecs.open("aminglinux.pdf", "wb") as f:  #写入文件
    pdfWriter.write(f)

相关文章

网友评论

    本文标题:python 学习笔记 (pdf)

    本文链接:https://www.haomeiwen.com/subject/rijkeftx.html