python 将单个文件转换为多个 pdf 文件,但第二个文件直到最后一个文件内容从上一个文件合并
python convert single file into multiple pdf file, but second file until the end file content merged from previous file
我要做的是从选定目录中读取所有 pdf 文件,
然后我对从目录中获得的所有 pdf 执行 for loop。
然后我用给定的密码保护文件。
假设我有 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")
请更正代码,确保每个文件的内容都是正确的
只需将 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")
我要做的是从选定目录中读取所有 pdf 文件, 然后我对从目录中获得的所有 pdf 执行 for loop。 然后我用给定的密码保护文件。
假设我有 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")
请更正代码,确保每个文件的内容都是正确的
只需将 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")