有時候我們只需要pdf中的幾頁,或許還想把這幾頁內容整合成新的pdf,那該怎麼做呢?
準備工作:
安裝擴充套件庫pypdf2,參考命令
pip install pypdf2
**如下:
from pypdf2 import pdffilereader, pdffilewriter
defsplit_pdf
(filename, result, start=
0, end=
none):
"""從filename中提取[start,end)之間的頁碼內容儲存為result"""
# 開啟原始 pdf 檔案
pdf_src = pdffilereader(filename)
if end is
none
:# 獲取頁數
end = pdf_src.getnumpages(
)with
open
(result,
"wb"
)as fp:
# 建立空白pdf檔案
pdf = pdffilewriter(
)# 提取頁面內容,寫入空白檔案
for num in
range
(start, end)
: pdf.addpage(pdf_src.getpage(num)
)# 寫入結果pdf
pdf.write(fp)
fn = r"g:\a001\第九天.pdf"
split_pdf(fn,
"1.pdf",0
,3)split_pdf(fn,
"2.pdf",1
,3)split_pdf(fn,
"3.pdf",2
,3)
遇見的問題一:
traceback (most recent call last)
: file "g:/a001/pdf.py"
, line 22
, insplit_pdf(fn,
"1.pdf",0
,3) file "g:/a001/pdf.py"
, line 7
,in split_pdf
pdf_src = pdffilereader(filename)
file "e:\project_luffy\luffy\lib\site-packages\pypdf2\pdf.py"
, line 1084
,in __init__
self.read(stream)
file "e:\project_luffy\luffy\lib\site-packages\pypdf2\pdf.py"
, line 1901
,in read
raise utils.pdfreaderror(
"could not find xref table at specified location"
)pypdf2.utils.pdfreaderror: could not find xref table at specified location
還沒有找到好的解決問題的辦法,但是我在操作過程中換了乙個新的pdf檔案就成功了,猜測是你的pdf檔案出了問題。
遇見的問題二:
在解決了上面的問題之後,程式可以正常的使用,但是還會出乙個問題:
pdfreadwarning: xref table not zero-indexed. id numbers for objects will be corrected.
[pdf.py:
1736
]
雖然不影響,但是體驗不好啊 ,繼續解決吧
import sys if
not sys.warnoptions:
import warnings
warnings.******filter(
"ignore"
)
上面**要加在最上面
關於pypdf2的內容,昨天有詳細講解過,不會的小夥伴可以檢視:高階pdf,就用python(pypdf2模組)
Python利用PyPDF2庫獲取PDF檔案總頁碼
python中可以利用pypdf2庫來獲取該pdf檔案的總頁碼,可以根據下面的方法一步步進行下去 1 首先,要安裝pypdf2庫,利用以下命令即可 pip install pypdf22 接著,就是直接編寫 了,其中我新建了乙個py檔案,名為file utils.py,如下 from pypdf2 ...
Python利用PyPDF2快速拆分PDF文件
目錄 人生苦短,快學python 因為這句口號,我也加入了學習python的浩浩大軍,但由於python真的是可以做的事情太多了,一時迷了眼,不知道自己應該去專攻哪個方向。經過多方向試探,我還是選擇了廣而不深的web開發,python的web開發自然離不開大名鼎鼎的django,有一次突發奇想,了d...
pyPdf和pyPdf2在合併pdf時的那個異常
當乙個pdf檔案有多page的時候,它將出來見你!方法是取直接修改那個檔案generic.py 1 pypdf 路徑大約在這裡 usr lib python2.7 site packages pypdf generic.py if data.has key key multiple definiti...