一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python PyPDF2模塊安裝使用解析

Python PyPDF2模塊安裝使用解析

2020-04-13 10:32小粉優化大師 Python

這篇文章主要介紹了Python PyPDF2模塊安裝使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了Python PyPDF2模塊安裝使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

PyPDF2模塊主要的功能是分割或合并PDF文件,裁剪或轉換PDF文件中的頁面。

0、安裝PyPDF2的模塊

pip install PyPDF2

1、常用的函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time  : 2020/1/15 13:38
# @Author : suk
# @File  : pyxl.py
# @Software: PyCharm
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))
print(reader.getNumPages()) # 獲取pdf總頁數
print(reader.isEncrypted) # 判斷是否有加密
page = reader.getPage(4) # 獲取第四頁
print(page.extractText()) # 獲取第四頁的內容
print(reader.getDocumentInfo()) # 獲取PDF元信息,即創建時間,作者,標題等

2、讀取PDF文件,取指定頁數,寫入到硬盤上的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))
 
output = PyPDF2.PdfFileWriter()
 
output.addPage(reader.getPage(1))
output.addPage(reader.getPage(4))
output.addPage(reader.getPage(5))
print(output.getNumPages()) # 獲取寫入頁的總頁數
 
output.encrypt('123456')
outputStream = open('PyPDF2-output.pdf', 'wb')
output.write(outputStream)
outputStream.close()

3、讀取PDF某一頁,旋轉180度后,寫入到新的PDF文件的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))
 
page = reader.getPage(0) # 獲取第0頁
page.rotateClockwise(180) # 旋轉180度
 
writer = PyPDF2.PdfFileWriter() # 創建PDF寫入的對象
writer.addPage(page)
 
outputStream = open('rotate-page-test.pdf', 'wb') # 創建一個PDF文件
writer.write(outputStream) # 往文件寫入PDF數據
outputStream.close() # 寫入流

4、PDF增加水印的示例

注意:水印模板可以利用WORD文檔寫好文字,轉為PDF即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb')) # 增加水印的原文件
 
watermark = PyPDF2.PdfFileReader(open('水印模板.pdf', 'rb')) # 水印的模板
 
writer = PyPDF2.PdfFileWriter() # 寫入PDF的對象
 
for i in range(reader.getNumPages()):
  page = reader.getPage(i)
  page.mergePage(watermark.getPage(0)) # 將原文件與水印模板合并
  writer.addPage(page) # 增加到寫入對象中
 
outputStream = open('watermark-test-linux.pdf', 'wb') # 打開一個寫入硬盤的文件對象
writer.write(outputStream) # 將合并好的數據,寫入硬盤中
outputStream.close() # 關閉文件句柄

測試效果

Python PyPDF2模塊安裝使用解析

5、合并多個指定的PDF文件的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from PyPDF2 import PdfFileMerger
 
merger = PdfFileMerger() # 創建一個合并的對象
 
input1 = open('01PDF.pdf', 'rb')
input2 = open('02PDF.pdf', 'rb')
input3 = open('03PDF.pdf', 'rb')
 
merger.append(fileobj=input1, pages=(0, 3)) # 合并文件1的0到3頁
merger.merge(position=2, fileobj=input2, pages=(0, 1)) # 合并文件2的0到1頁
merger.append(fileobj=input3) # 合并文件的所有頁
 
output = open('document-output.pdf', 'wb') # 保存硬盤上
merger.write(output) # 寫入到硬盤上
output.close() # 關閉文件句柄

6、批量合并指定目錄的PDF文件的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import PyPDF2
import os
import glob
 
def get_all_pdf_files(path):
  """獲取指定目錄的所有pdf文件名"""
  all_pdfs = glob.glob('{0}/*.pdf'.format(path))
  all_pdfs.sort(key=str.lower) # 排序
  return all_pdfs
 
def main():
  path = os.getcwd()
  all_pdfs = get_all_pdf_files(path)
  if not all_pdfs:
    raise SystemExit('沒有可用的PDF類型文件')
 
  merger = PyPDF2.PdfFileMerger()
 
  first_obj = open(all_pdfs[0], 'rb') # 打開第一個PDF文件
  merger.append(first_obj) # 增加到合并的對象中
 
  file_objs = []
  for pdf in all_pdfs[1:]: # 讀取所有的文件對象
    file_objs.append(open(pdf, 'rb'))
 
  for file_obj in file_objs:
    reader = PyPDF2.PdfFileReader(file_obj)
    merger.append(fileobj=file_obj, pages=(1, reader.getNumPages()))
 
  outputStream = open('merge-pdfs.pdf', 'wb')
  merger.write(outputStream)
  outputStream.close()
  for file_obj in file_objs: # 批量關閉文件句柄
    file_obj.close()
 
if __name__ == '__main__':
  main()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/ygbh/p/12206929.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: freexxx性欧美3d动漫 | 美女脱衣有肉 | 动漫人物差差差动漫人物免费观看 | 精品久久久久中文字幕日本 | 韩国理论片最新第一页 | 成人福利 | 亚洲欧美成人中文在线网站 | 黄动漫车车好快的车车双女主 | 国产福利一区二区精品视频 | 青青草一区二区免费精品 | 干妞网免费视频 | 日本www视频在线观看 | 黄色a∨| 男人操女人动图 | chinesemature老女人| 肉车各种play文r | 国产90后美女露脸在线观看 | 免费看a片毛片 | 欧美日韩中文字幕一区二区高清 | 沉沦艳妇杨幂肉体小说 | 精品视频在线免费播放 | 日本人在线看片 | 国产成人免费在线观看 | 国产精品久久现线拍久青草 | 性满足久久久久久久久 | 40岁女人三级全黄 | 热99re久久精品精品免费 | 修修视频在线观看 | 国产成人综合网亚洲欧美在线 | 亚洲成年网站在线观看 | 久久婷婷五月免费综合色啪 | 91久久偷偷做嫩草影院免费看 | www.男人天堂 | 人人爽人人草 | 天天排行网 | 日本伦理动漫在线观看 | 国产美女下面流出白浆视频 | 精品国产精品国产 | 无人区在线观看免费完整版免费 | 亚洲 欧美 成人 | 交换朋友夫妇3中文字幕 |