13.2 项目:从多个 PDF 中合并选择的页面
import PyPDF2, os
# Get all the PDF filenames.
pdfFiles = []
'''第 1 步:找到所有 PDF 文件'''
for filename in os.listdir('.'):
#os.listdir('.')调用将返回当前工作目录中所有文件的列表。
if filename.endswith('.pdf'):
#将带有.pdf 扩展名的文件添加到 pdfFiles 中
pdfFiles.append(filename)
pdfFiles.sort(key=str.lower)
#列表按照字典顺序排序,调用sort()时带有 key/str.lower 关键字参数
pdfWriter = PyPDF2.PdfFileWriter()
'''第 2 步:打开每个 PDF 文件'''
for filename in pdfFiles:
pdfFileObj = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
for pageNum in range(1, pdfReader.numPages):
#'''第 3 步:添加每一页'''
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
'''第 4 步:保存结果'''
pdfOutput = open('allminutes.pdf', 'wb')
pdfWriter.write(pdfOutput)
pdfOutput.close()
关于Python的sort():https://www.cnblogs.com/ShaunChen/p/6205330.html
感觉很好用,(随后会解算法题)
类似程序的想法
1,从 PDF 文件中截取特定的页面
#功能:
#将watermark.pdf读入作为封面
#将meetingminutes2.pdf读入2~3页作为内容
import PyPDF2
pdf1File = open('watermark.pdf', 'rb')
pdf2File = open('meetingminutes.pdf', 'rb')
pdf1Reader = PyPDF2.PdfFileReader(pdf1File)
pdf2Reader = PyPDF2.PdfFileReader(pdf2File)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdf1Reader.numPages):
pageObj = pdf1Reader.getPage(pageNum)
pdfWriter.addPage(pageObj)
for pageNum in range(2,4):
pageObj = pdf2Reader.getPage(pageNum)
pdfWriter.addPage(pageObj)
pdfOutputFile = open('test_one.pdf', 'wb')
pdfWriter.write(pdfOutputFile)
pdfOutputFile.close()
pdf1File.close()
pdf2File.close()
2,重新调整 PDF 文件中页面的次序
利用第1题的方法
3,创建一个 PDF 文件,只包含那些具有特定文本的页面。文本由 extractText()来确定。
<class 'PyPDF2.pdf.PdfFileWriter'>
从pdf中提取的文本类型不是字符串,所以无法通过string来筛选.
13.3 Word文档
有了 python-docx,Python 程序就能从.docx 文件中读取文本,像其他的字符串值一样使用它
这说明:.docx文件读取的是string类型.
13.6 实践项目
13.6.1 PDF 偏执狂
13.6.2 定制邀请函,保存为 Word 文档
13.6.3 暴力 PDF 口令破解程序