解密许多 PDF 中的一个以在 Python 中合并为一个
decrypt a one of many PDFs for combining into one in Python
我正在使用 Python 将一个文件夹下的多个 PDF 合并为一个 PDF。但是我知道其中一个PDF有密码,所以我需要解密它,密码是:rosebud.
我认为我的代码确实在循环遍历此文件夹中的所有 PDF 文件时解密了此文件,但我不断收到错误消息:PyPDF2.utils.PdfReadError:文件尚未解密。
我的代码:
import PyPDF2, os
pdfFiles=[]
pdfFiles = [filename for filename in os.listdir('.') if filename.endswith('.pdf')]
pdfFiles.sort(key=str.lower)
pdfwriter=PyPDF2.PdfFileWriter()
#loop through all the PDF file
for filename in pdfFiles:
pdfReader=PyPDF2.PdfFileReader(open(filename,'rb'))
if pdfReader.isEncrypted:
pdfReader.decrypt('rosebud')
#all page except first:0
for pagenum in range(1,pdfReader.numPages):
pageObj=pdfReader.getPage(pagenum)
pdfwriter.addPage(pageObj)
pdfoutput=open('allmyfile.pdf','wb')
pdfwriter.write(pdfoutput)
pdfoutput.close()
谢谢
很可能您的代码没有真正解密文件。
如果解密失败,decrypt
方法不会引发异常;它 returns 0
。由于您忽略了 return 值,因此您无法知道它是否真的成功了。
如果解密失败,您将在稍后尝试读取文件时收到 PyPDF2.utils.PdfReadError: File has not been decrypted
。
你应该改变你的代码来做这样的事情:
if pdfReader.isEncrypted:
decrypt = pdfReader.decrypt('rosebud')
if decrypt == 0:
# print a warning and skip the file? raise an exception?
当然,要真正解决问题,您需要使用正确的密码来解密 PDF。
我正在使用 Python 将一个文件夹下的多个 PDF 合并为一个 PDF。但是我知道其中一个PDF有密码,所以我需要解密它,密码是:rosebud.
我认为我的代码确实在循环遍历此文件夹中的所有 PDF 文件时解密了此文件,但我不断收到错误消息:PyPDF2.utils.PdfReadError:文件尚未解密。
我的代码:
import PyPDF2, os
pdfFiles=[]
pdfFiles = [filename for filename in os.listdir('.') if filename.endswith('.pdf')]
pdfFiles.sort(key=str.lower)
pdfwriter=PyPDF2.PdfFileWriter()
#loop through all the PDF file
for filename in pdfFiles:
pdfReader=PyPDF2.PdfFileReader(open(filename,'rb'))
if pdfReader.isEncrypted:
pdfReader.decrypt('rosebud')
#all page except first:0
for pagenum in range(1,pdfReader.numPages):
pageObj=pdfReader.getPage(pagenum)
pdfwriter.addPage(pageObj)
pdfoutput=open('allmyfile.pdf','wb')
pdfwriter.write(pdfoutput)
pdfoutput.close()
谢谢
很可能您的代码没有真正解密文件。
如果解密失败,decrypt
方法不会引发异常;它 returns 0
。由于您忽略了 return 值,因此您无法知道它是否真的成功了。
如果解密失败,您将在稍后尝试读取文件时收到 PyPDF2.utils.PdfReadError: File has not been decrypted
。
你应该改变你的代码来做这样的事情:
if pdfReader.isEncrypted:
decrypt = pdfReader.decrypt('rosebud')
if decrypt == 0:
# print a warning and skip the file? raise an exception?
当然,要真正解决问题,您需要使用正确的密码来解密 PDF。