标签:进制 加密 out add min 操作 get 数据 这一
使用PyPDF2模块
pip install PyPDF2
直接读取,并打印出来。但是这种打印存在一个问题,不能中文字符
import PyPDF2
import os
pdf_obj = open(‘de8ug.pdf‘, ‘rb‘) # 使用二进制方式打开,生成一个文件对象
pdf = PyPDF2.PdfFileReader(pdf_obj) # 把文件对象传入到pdfread中
print(pdf.numPages) # 获取pdf的页数
page = pdf.getPage(1) # 获取PDF某一页内容,生产一个对象
print(page.extractText()) # 打印出来,但是存在一个问题,不能显示中文
解决中文字符的问题
import os
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
# 资源管理 # 运行过程
from pdfminer.converter import TextConverter # 文本转换
from pdfminer.layout import LAParams # 布局
from io import StringIO # 临时文件
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(‘de8ug.pdf‘)
s.split(‘\n\x0c‘) # 每一页都是根据这个进行分割的
从某一个PDF中获取某一页写入到新的一个PDF中
import PyPDF2
pdf_writer = PyPDF2.PdfFileWriter() # 先生成一个写对象
# 生成一个读对象,并获取指定某一页码
pdf_obj = open(‘de8ug.pdf‘, ‘rb‘)
pdf = PyPDF2.PdfFileReader(pdf_obj)
page = pdf.getPage(1)
# 在写对象中加入这一夜
pdf_writer.addPage(page)
# 打开一个文件,写入内容
with open(‘lh-1.pdf‘, ‘wb‘) as f:
pdf_writer.write(f)
pdf_obj.close()
加密
with open(‘debug.pdf‘, ‘rb‘) as f:
# 打开需要加密文件,使用文件对象生成一个PDF_read对象
pdf_read = PyPDF2.PdfFileReader(f)
# 生成一个pdf写对象
pdf_write = PyPDF2.PdfFileWriter()
# 循环每一页,把read对象中的每一页,加入到write对象中
for page in range(pdf.numPages):
pdf_write.addPage(pdf.getPage(page))
# 对read对象进行加密
pdf_write.encrypt(‘hilouhui‘)
# 直接写入到文本中
with open(‘lh-en.pdf‘, ‘wb‘) as f2:
pdf_write.write(f2)
解密:
import PyPDF2 with open(‘lh-en.pdf‘, ‘rb‘) as f: pdf_read = PyPDF2.PdfFileReader(f) print(pdf_read.isEncrypted) # 判读是否加密,这个只是read对象的方法 pdf_read.decrypt(‘hilouhui‘) # 解密 # print(pdf_read.getPage(1).extractText()) page = pdf_read.getPage(1) print(page.extractText())
加水印的原理其实就是多个pdf的合并
import PyPDF2 with open(‘de8ug.pdf‘, ‘rb‘) as f_in: with open(‘water.pdf‘, ‘rb‘) as f_out: # 打开两个pdf 对对象: pdf_in = PyPDF2.PdfFileReader(f_in) pdf_out = PyPDF2.PdfFileReader(f_out) # 打开一个写的PDF对象 pdf_write = PyPDF2.PdfFileWriter() # 里面那层每一页读取出来,实用水印页进行合并。在写到pdf_write中 for page_num in range(pdf_in.numPages): page = pdf_in.getPage(page_num) page.mergePage(pdf_out.getPage(0)) # 对每一页进行合并 pdf_write.addPage(page) # 写入文件 with open(‘de8ug-water.pdf‘, ‘wb‘) as f: pdf_write.write(f)
标签:进制 加密 out add min 操作 get 数据 这一
原文地址:https://www.cnblogs.com/louhui/p/9102927.html