# 從pdf中讀取文本
# 寫pdf
# 加密解密pdf
# 和平pdf,加水印
# pip install PyPDF2
%cd D:\python全站\office
import PyPDF2
D:\python全站\office
pdf_obj = open('coop.pdf', 'rb')
pdf = PyPDF2.PdfFileReader(pdf_obj)
pdf.numPages
3
page = pdf.getPage(0)
page.extractText() # 提取文件
'\n\n \n \n1\\\n1\nN¥\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \n\n\n \n \n\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \n \n\n\n \n \n\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \nde8ug word\n \n \n'
# 提取中文 pip install pdfminer3k #支持中文
from pdfminer.pdfinterp import PDFResourceManager, process_pdf # 資源管理
from pdfminer.converter import TextConverter # 文本轉(zhuǎn)換
from pdfminer.layout import LAParams #布局
from io import StringIO # 生成臨時(shí)文件
def convert_pdf(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, laparams = laparams)
fp = open(path, 'rb')
process_pdf(rsrcmgr, device, fp)
fp.close()
device.close()
out = retstr.getvalue()
retstr.close()
return out
s = convert_pdf('coop.pdf')
# print(s)
# convert_pdf('coop.pdf')
s.split('\n\x0c')
['測試語句 \n\n第 1 頁 \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\n測試語句 \n\n第一頁 \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\n測試語句 \n\n第一頁 \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\n \n \n \n \n ',
'測試語句 \n\n第 2 頁 \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\n \n \n \n \n ',
'de8ug word \n\n測試語句 \n\n第 3 頁 \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\nde8ug word \n\n \n \n ',
'']
# 寫pdf,從上文打開的pdf找出第二頁,新鞋一個(gè)pdf
pdf_writer = PyPDF2.PdfFileWriter()
page = pdf.getPage(1)
pdf_writer.addPage(page)
with open('coop-1.pdf', 'wb') as f:
pdf_writer.write(f)
pdf_obj.close()
# 加密pdf
with open('coop.pdf', 'rb') as f_in:
pdf = PyPDF2.PdfFileReader(f_in)
pdf_writer = PyPDF2.PdfFileWriter()
for page_num in range(pdf.numPages):
pdf_writer.addPage(pdf.getPage(page_num))
pdf_writer.encrypt('hicoop')
with open('coop-s.pdf', 'wb') as f_out:
pdf_writer.write(f_out)
# 解密
with open('coop-s.pdf', 'rb') as f_in:
pdf = PyPDF2.PdfFileReader(f_in)
print(pdf.isEncrypted)
pdf.decrypt('hicoop')
pdf.getPage(0) #取到解密后的數(shù)據(jù)才能正常操作
True
# 合并多個(gè)pdf,加水印
with open('coop.pdf', 'rb') as f_in:
with open('coop-watermarked.pdf', 'rb') as f_w:
pdf = PyPDF2.PdfFileReader(f_in)
pdf_w = PyPDF2.PdfFileReader(f_w)
pdf_write = PyPDF2.PdfFileWriter()
for page_num in range(pdf.numPages):
page = pdf.getPage(page_num)
page.mergePage(pdf_w.getPage(0))
pdf_write.addPage(page)
with open('coop-watermarked.pdf', 'wb') as f_out:
pdf_write.write(f_out)
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-39-b87325251ec9> in <module>()
3 with open('coop-watermarked.pdf', 'rb') as f_w:
4 pdf = PyPDF2.PdfFileReader(f_in)
----> 5 pdf_w = PyPDF2.PdfFileReader(f_w)
6
7 pdf_write = PyPDF2.PdfFileWriter()
c:\users\coop\miniconda3\envs\coop\lib\site-packages\PyPDF2\pdf.py in __init__(self, stream, strict, warndest, overwriteWarnings)
1082 stream = BytesIO(b_(fileobj.read()))
1083 fileobj.close()
-> 1084 self.read(stream)
1085 self.stream = stream
1086
c:\users\coop\miniconda3\envs\coop\lib\site-packages\PyPDF2\pdf.py in read(self, stream)
1687 if debug: print(">>read", stream)
1688 # start at the end:
-> 1689 stream.seek(-1, 2)
1690 if not stream.tell():
1691 raise utils.PdfReadError('Cannot read an empty file')
OSError: [Errno 22] Invalid argument
當(dāng)前標(biāo)題:pythonpdf
文章路徑:http://jinyejixie.com/article0/iehioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、響應(yīng)式網(wǎng)站、云服務(wù)器、電子商務(wù)、域名注冊(cè)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)