我要做的是從所選目錄中讀取所有 pdf 檔案,然后我為從目錄中獲得的所有 pdf執行for 回圈。然后我用給定的密碼保護檔案。
假設我有 5 個檔案需要使用給定的密碼進行保護。使用正確內容成功保護的第一個檔案。但是第二個檔案直到五個檔案內容都與前一個檔案內容合并。
例如在第二個檔案中有第一個檔案內容和第二個檔案內容。在第三個檔案內容中有第一個檔案、第二個檔案和第三個檔案內容。
這是代碼:
import os
import datetime
from PyPDF2 import PdfFileReader, PdfFileWriter
def is_encrypted(filename: str) -> bool:
with open(filename, 'rb') as f:
pdf_reader = PdfFileReader(f, strict=False)
return pdf_reader.isEncrypted
curdate = datetime.date.today()
folder = os.getcwd() "\\" curdate.strftime("%d-%m-%Y")
pdf2merge = []
for filename in os.listdir(folder):
#print(filename)
if filename.endswith('.pdf'):
pdf2merge.append(filename)
pdf2merge.sort()
pdf_writer = PdfFileWriter()
for counter, filename in enumerate(pdf2merge):
path_file = folder '/' filename
splitExt = filename.split('.')
splitExt.pop()
joinName = '_'.join(splitExt)
splitFile = joinName.split('_')
password = splitFile.pop()
enc_filename = str('_'.join(splitFile)) ".pdf"
output_file = "payslip-encrypted/" enc_filename
if is_encrypted(path_file):
print("PDF File " filename " is already encrypted.")
try:
pdfFile = open(path_file, 'rb')
pdf_reader = PdfFileReader(pdfFile, strict=False)
for page_number in range(pdf_reader.numPages):
pdf_writer.addPage(pdf_reader.getPage(page_number))
except utils.PdfReadError:
print("Error while reading PDF file " filename)
pdf_writer.encrypt(user_pwd=password, use_128bit=True)
pdfOut = open(output_file, "wb")
pdf_writer.write(pdfOut)
pdfOut.close()
pdfFile.close()
print("PDF file " os.getcwd() "\payslip-encrypted\\" enc_filename " encrypted successfully")
請更正代碼,以便每個檔案的內容都是正確的
uj5u.com熱心網友回復:
只是pdf_writer = PdfFileWriter()進入回圈。
import os
import datetime
from PyPDF2 import PdfFileReader, PdfFileWriter
def is_encrypted(filename: str) -> bool:
with open(filename, 'rb') as f:
pdf_reader = PdfFileReader(f, strict=False)
return pdf_reader.isEncrypted
curdate = datetime.date.today()
folder = os.getcwd() "/" curdate.strftime("%d-%m-%Y")
pdf2merge = []
for filename in os.listdir(folder):
#print(filename)
if filename.endswith('.pdf'):
pdf2merge.append(filename)
pdf2merge.sort()
for filename in pdf2merge:
pdf_writer = PdfFileWriter()
path_file = folder '/' filename
splitExt = filename.split('.')
splitExt.pop()
joinName = '_'.join(splitExt)
splitFile = joinName.split('_')
password = splitFile.pop()
enc_filename = str('_'.join(splitFile)) ".pdf"
output_file = "payslip-encrypted/" enc_filename
if is_encrypted(path_file):
print("PDF File " filename " is already encrypted.")
try:
pdfFile = open(path_file, 'rb')
pdf_reader = PdfFileReader(pdfFile, strict=False)
for page_number in range(pdf_reader.numPages):
pdf_writer.addPage(pdf_reader.getPage(page_number))
except utils.PdfReadError:
print("Error while reading PDF file " filename)
pdf_writer.encrypt(user_pwd=password, use_128bit=True)
pdfOut = open(output_file, "wb")
pdf_writer.write(pdfOut)
pdfOut.close()
pdfFile.close()
print("PDF file " os.getcwd() "\payslip-encrypted\\" enc_filename " encrypted successfully")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381140.html
