中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何利用PyPDF2庫獲取PDF文件總頁碼

發布時間:2021-03-11 09:37:49 來源:億速云 閱讀:147 作者:小新 欄目:開發技術

小編給大家分享一下Python如何利用PyPDF2庫獲取PDF文件總頁碼,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Python中可以利用PyPDF2庫來獲取該pdf文件的總頁碼,可以根據下面的方法一步步進行下去:

1、首先,要安裝PyPDF2庫,利用以下命令即可:

pip install PyPDF2

2、接著,就是直接編寫代碼了,其中我新建了一個py文件,名為file_utils.py,代碼如下:

from PyPDF2 import PdfFileReader
 
def get_num_pages(file_path):
 """
 獲取文件總頁碼
 :param file_path: 文件路徑
 :return:
 """
 reader = PdfFileReader(file_path)
 # 不解密可能會報錯:PyPDF2.utils.PdfReadError: File has not been decrypted
 if reader.isEncrypted:
  reader.decrypt('')
 page_num = reader.getNumPages()
 return page_num

3、這樣就可以獲得該pdf文件的總頁數了,但是需要傳遞文件路徑進去,因為需要讀取這個文件。

4、以上內容僅供學習參考,謝謝!

補充知識:使用python合并pdf文件帶書簽

1、需求:

將幾本紙質書進行了掃描,可是掃描的每頁生成一個pdf文件。需要怎么才能把這些pdf文件合成一個呢?adoba acrobat工具支持,可是收費。我們平時用的都是adoba reader,只有讀pdf的功能沒有合并等高級功能。網上的一些免費工具又擔心有病毒或綁定程序。

所以考慮看看pyton實現。網上找了下python合并pdf的腳本,發現也沒有添加書簽的功能的,有添加書簽的也不是很靈活。

所有對網上找的一個python程序進行了升級,可以實現合并pdf并每個章節加入書簽。

文件準備:

先將掃描的pdf文件,每一章放到一個文件夾中,文件夾名字用章節名命名。這樣最終程序就能將章節名作為書簽了,而不是默認將每頁都生成書簽。

Python如何利用PyPDF2庫獲取PDF文件總頁碼

2、程序代碼

代碼運行環境:python3

需要安裝PyPDF2包:pip install PyPDF2

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
 本腳本用來合并pdf文件,支持帶一級子目錄的
 每章內容分別放在不同的目錄下,目錄名為章節名
 最終生成的pdf,按章節名生成書簽
'''

import os, sys, codecs
from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
import glob

def getFileName(filepath):
 '''
  獲取當前目錄下的所有pdf文件
 '''
 file_list = glob.glob(filepath+"/*.pdf")
 # 默認安裝字典序排序,也可以安裝自定義的方式排序
 # file_list.sort()
 return file_list


def get_dirs(filepath='', dirlist_out=[], dirpathlist_out=[]):
 # 遍歷filepath下的所有目錄
 for dir in os.listdir(filepath):
  dirpathlist_out.append(filepath + '\\' + dir)

 return dirpathlist_out


def merge_childdir_files(path):
 '''
  每個子目錄下合并生成一個pdf
 '''
 dirpathlist = get_dirs(path)
 if len(dirpathlist) == 0:
  print("當前目錄不存在子目錄")
  sys.exit()
 for dir in dirpathlist:
  mergefiles(dir, dir)


def mergefiles(path, output_filename, import_bookmarks=False):
 # 遍歷目錄下的所有pdf將其合并輸出到一個pdf文件中,輸出的pdf文件默認帶書簽,書簽名為之前的文件名
 # 默認情況下原始文件的書簽不會導入,使用import_bookmarks=True可以將原文件所帶的書簽也導入到輸出的pdf文件中
 merger = PdfFileMerger()
 filelist = getFileName(path)
 if len(filelist) == 0:
  print("當前目錄及子目錄下不存在pdf文件")
  sys.exit()
 for filename in filelist:
  f = codecs.open(filename, 'rb')
  file_rd = PdfFileReader(f)
  short_filename = os.path.basename(os.path.splitext(filename)[0])
  if file_rd.isEncrypted == True:
   print('不支持的加密文件:%s'%(filename))
   continue
  merger.append(file_rd, bookmark=short_filename, import_bookmarks=import_bookmarks)
  print('合并文件:%s'%(filename))
  f.close()
 # out_filename = os.path.join(os.path.abspath(path), output_filename)
 merger.write(output_filename + ".pdf")
 print('合并后的輸出文件:%s'%(output_filename))
 merger.close()

if __name__ == "__main__":
 # 每個章節一個子目錄,先分別合并每個子目錄文件為一個pdf,然后再將這些pdf合并為一個大的pdf,這樣做目的是想生成每個章節的書簽

 # 1.指定目錄
 # 原始pdf所在目錄
 path = "D:\spdf"
 # 輸出pdf路徑和文件名
 output_filename = "D:\spdf\戰略規劃 公司實現持續成功的方法、工具和實踐 羅熙昶 2018-09"

 # 2.生成子目錄的pdf
 # merge_childdir_files(path)

 # 3.子目錄pdf合并為總的pdf
 mergefiles(path, output_filename)

3、程序使用

將要生成的pdf文件目錄導入到程序指定目錄下,例如我程序中的path是“D:\spdf”,然后指定最終輸出的文件路徑及文件名,我上面的output_filename是"D:\spdf\戰略規劃 公司實現持續成功的方法、工具和實踐 羅熙昶 2018-09"

數據結果如下:

Python如何利用PyPDF2庫獲取PDF文件總頁碼

看完了這篇文章,相信你對“Python如何利用PyPDF2庫獲取PDF文件總頁碼”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石台县| 南安市| 周至县| 许昌市| 乌拉特后旗| 铁岭县| 张家口市| 小金县| 双辽市| 岢岚县| 临泽县| 炉霍县| 陈巴尔虎旗| 鸡泽县| 天长市| 呈贡县| 奉化市| 普兰县| 新郑市| 石嘴山市| 安丘市| 宜兰县| 海阳市| 恩施市| 丽江市| 徐汇区| 龙泉市| 高密市| 孟津县| 望都县| 繁峙县| 黄平县| 江口县| 沁阳市| 庆云县| 景谷| 来凤县| 西乌珠穆沁旗| 庆元县| 德令哈市| 衡南县|