欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用PyPDF2庫獲取PDF文件總頁碼實(shí)例

 更新時(shí)間:2020年04月03日 14:26:11   作者:煢夜  
這篇文章主要介紹了Python利用PyPDF2庫獲取PDF文件總頁碼實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

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

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

pip install PyPDF2

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

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

3、這樣就可以獲得該pdf文件的總頁數(shù)了,但是需要傳遞文件路徑進(jìn)去,因?yàn)樾枰x取這個(gè)文件。

4、以上內(nèi)容僅供學(xué)習(xí)參考,謝謝!

補(bǔ)充知識(shí):使用python合并pdf文件帶書簽

1、需求:

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

所以考慮看看pyton實(shí)現(xiàn)。網(wǎng)上找了下python合并pdf的腳本,發(fā)現(xiàn)也沒有添加書簽的功能的,有添加書簽的也不是很靈活。

所有對(duì)網(wǎng)上找的一個(gè)python程序進(jìn)行了升級(jí),可以實(shí)現(xiàn)合并pdf并每個(gè)章節(jié)加入書簽。

文件準(zhǔn)備:

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

2、程序代碼

代碼運(yùn)行環(huán)境:python3

需要安裝PyPDF2包:pip install PyPDF2

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

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

def getFileName(filepath):
 '''
  獲取當(dāng)前目錄下的所有pdf文件
 '''
 file_list = glob.glob(filepath+"/*.pdf")
 # 默認(rèn)安裝字典序排序,也可以安裝自定義的方式排序
 # 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):
 '''
  每個(gè)子目錄下合并生成一個(gè)pdf
 '''
 dirpathlist = get_dirs(path)
 if len(dirpathlist) == 0:
  print("當(dāng)前目錄不存在子目錄")
  sys.exit()
 for dir in dirpathlist:
  mergefiles(dir, dir)


def mergefiles(path, output_filename, import_bookmarks=False):
 # 遍歷目錄下的所有pdf將其合并輸出到一個(gè)pdf文件中,輸出的pdf文件默認(rèn)帶書簽,書簽名為之前的文件名
 # 默認(rèn)情況下原始文件的書簽不會(huì)導(dǎo)入,使用import_bookmarks=True可以將原文件所帶的書簽也導(dǎo)入到輸出的pdf文件中
 merger = PdfFileMerger()
 filelist = getFileName(path)
 if len(filelist) == 0:
  print("當(dāng)前目錄及子目錄下不存在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__":
 # 每個(gè)章節(jié)一個(gè)子目錄,先分別合并每個(gè)子目錄文件為一個(gè)pdf,然后再將這些pdf合并為一個(gè)大的pdf,這樣做目的是想生成每個(gè)章節(jié)的書簽

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

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

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

3、程序使用

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

數(shù)據(jù)結(jié)果如下:

以上這篇Python利用PyPDF2庫獲取PDF文件總頁碼實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python連接access數(shù)據(jù)庫兩種方式總結(jié)

    python連接access數(shù)據(jù)庫兩種方式總結(jié)

    這篇文章主要介紹了python連接access數(shù)據(jù)庫兩種方式的相關(guān)資料,SQLAlchemy使用access方言進(jìn)行連接,而pyodbc則通過pyodbc模塊實(shí)現(xiàn)連接,文章還提供了連接代碼示例,需要的朋友可以參考下
    2025-02-02
  • 解決windows下命令行執(zhí)行python3失效,會(huì)打開應(yīng)用商店問題

    解決windows下命令行執(zhí)行python3失效,會(huì)打開應(yīng)用商店問題

    這篇文章主要介紹了解決windows下命令行執(zhí)行python3失效,會(huì)打開應(yīng)用商店問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python 中不同包 類 方法 之間的調(diào)用詳解

    python 中不同包 類 方法 之間的調(diào)用詳解

    這篇文章主要介紹了python 中不同包 類 方法 之間的調(diào)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于Django集成CAS實(shí)現(xiàn)流程詳解

    基于Django集成CAS實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了基于Django集成CAS實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 深入源碼解析Python中的對(duì)象與類型

    深入源碼解析Python中的對(duì)象與類型

    這篇文章主要介紹了深入源碼解析Python中的對(duì)象與類型,涉及到對(duì)象的引用計(jì)數(shù)方法和類型的定義等深層次內(nèi)容,需要的朋友可以參考下
    2015-12-12
  • 深入淺析NumPy庫中的numpy.diag()函數(shù)

    深入淺析NumPy庫中的numpy.diag()函數(shù)

    通過本文的介紹,我們深入了解了NumPy庫中numpy.diag()函數(shù)的用法和應(yīng)用,從基本用法到高級(jí)特性,再到在線性代數(shù)中的應(yīng)用,我們逐步展示了numpy.diag()在處理對(duì)角矩陣和相關(guān)問題時(shí)的強(qiáng)大功能,需要的朋友可以參考下
    2024-05-05
  • opencv實(shí)現(xiàn)圖像平移效果

    opencv實(shí)現(xiàn)圖像平移效果

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)圖像平移效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 在Python中通過機(jī)器學(xué)習(xí)實(shí)現(xiàn)人體姿勢估計(jì)

    在Python中通過機(jī)器學(xué)習(xí)實(shí)現(xiàn)人體姿勢估計(jì)

    姿態(tài)檢測是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)活躍研究領(lǐng)域。這篇文章將為大家介紹在Python中如何利用機(jī)器學(xué)習(xí)進(jìn)行人體姿勢估計(jì),感興趣的小伙伴可以了解一下
    2021-12-12
  • Pycharm中切換pytorch的環(huán)境和配置的教程詳解

    Pycharm中切換pytorch的環(huán)境和配置的教程詳解

    這篇文章主要介紹了Pycharm中切換pytorch的環(huán)境和配置,本文給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python數(shù)據(jù)挖掘需要學(xué)的內(nèi)容

    python數(shù)據(jù)挖掘需要學(xué)的內(nèi)容

    在本篇文章中我們給大家整理了關(guān)于python數(shù)據(jù)挖掘需要學(xué)什么的知識(shí)點(diǎn)指南,有興趣的朋友們跟著參考下。
    2019-06-06

最新評(píng)論