我正在尝试制作一个python程序,该程序循环遍历文件夹中的所有文件,选择扩展名为“.pdf”的文件,并使用受限权限对其进行加密。使用此PDI库版本的PyAM: https://github.com/vchatterji/PyPDF2。(对原始PyPDF2的修改,它还允许设置权限)。我已经用一个pdf文件测试过了,效果很好。我希望原始的pdf文件应该被删除,加密的文件应该保持相同的名称。 这是我的密码:
import os
import PyPDF2
directory = './'
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
pdfFile = open(filename, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
pdfWriter.addPage(pdfReader.getPage(pageNum))
pdfFile.close()
os.remove(filename)
pdfWriter.encrypt('', 'ispat', perm_mask=-3904)
resultPdf = open(filename, 'wb')
pdfWriter.write(resultPdf)
resultPdf.close()
continue
else:
continue
它给出以下错误:
C:\Users\manul\Desktop\ghh>python encrypter.py
Traceback (most recent call last):
File "encrypter.py", line 9, in <module>
pdfReader = PyPDF2.PdfFileReader(pdfFile)
File "C:\Users\manul\AppData\Local\Programs\Python\Python37\lib\site-packages\PyPDF2\pdf.py", line 1153, in __init__
self.read(stream)
File "C:\Users\manul\AppData\Local\Programs\Python\Python37\lib\site-packages\PyPDF2\pdf.py", line 1758, in read
stream.seek(-1, 2)
OSError: [Errno 22] Invalid argument
我有一些PDF存储在桌面上的“ghh”文件夹中。非常感谢您的帮助。你知道吗
使用
pdfReader = PyPDF2.PdfFileReader(filename)
将使读取器工作,但此特定错误是由文件为空引起的。您可以使用os.path.getsize(filename)
检查文件大小。您的文件可能已被擦除,因为脚本删除了原始文件,然后用open(filepath, "wb")
创建了一个新文件,然后由于pdfWriter.write(resultPdf)
发生错误而错误终止,留下一个带有原始文件名的空文件。你知道吗如前所述,将文件名而不是文件对象传递给
PdfFileReader
可以解决pdfWriter
出现的错误(我不知道为什么),但您需要用原始PDF的副本替换目录中的任何空文件以消除操作错误。你知道吗相关问题 更多 >
编程相关推荐