【问题标题】:PyPDF2: Decrypt a File and Merge It With Other Members of a List of PDFsPyPDF2:解密文件并将其与 PDF 列表的其他成员合并
【发布时间】:2020-04-21 10:50:42
【问题描述】:

我正在尝试使工作中的一些流程自动化。我能够合并列表中的 PDF,并能够将合并的 PDF 用于创建加密的 PDF。现在,我一直在尝试获取现有的加密 PDF,对其进行解密,然后将其与列表的其他成员合并。每次我解密并尝试与未加密的 PDF 合并时,我的错误消息都会显示“文件尚未解密”。下面是我的代码,直到我需要合并加密和未加密的 PDFS。

PyPDF2 是否只允许您使用解密方法阅读加密的 PDF?我应该为加密的 PDF 创建一个新列表并附加到该列表吗?是否可以解密 PDF、复制其内容并创建新的未加密文件?任何帮助将非常感激。谢谢你。

import os
import PyPDF2
os.chdir(r'C:\Users\######\Downloads')

#Here I merge Two dummy PDFs 
pdfs = ['Gateway Parking Form.pdf', 'sample.pdf']
merger = PyPDF2.PdfFileMerger()
for pdf in pdfs:
    merger.append(pdf)
merger.write("result.pdf")
merger.close

#Here I copy the contents of the merged file to create a new encrypted PDF
pdfFile = open("result.pdf", "rb")
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
    pdfWriter.addPage(pdfReader.getPage(pageNum))
pdfWriter.encrypt("HelloDude")
resultPdf = open("result_Client.pdf", "wb")
pdfWriter.write(resultPdf)
pdfFile.close()
resultPdf.close()

#Here I WANT to decrypt the password-protected PDF and merge it with two dummy PDFs
pdfs = ['Gateway Parking Form.pdf', 'sample.pdf', "result_Client.pdf"]
for pdf in pdfs:
    pdfFile = open(pdf, "rb")
    reader = PyPDF2.PdfFileReader(pdfFile)
    writer = PyPDF2.PdfFileWriter()
    if reader.isEncrypted:
        reader.decrypt("HelloDude")

【问题讨论】:

    标签: python python-3.x pdf encryption pypdf2


    【解决方案1】:
    def decryption(input_name,output_name,password):
        pdfFile = open(input_name, "rb")
        reader = PyPDF2.PdfFileReader(pdfFile)
        writer = PyPDF2.PdfFileWriter()
        if reader.isEncrypted:
            reader.decrypt(password)
        for pageNum in range(reader.numPages):
            writer.addPage(reader.getPage(pageNum))
        resultPdf = open(output_name, "wb")
        writer.write(resultPdf)
        pdfFile.close()
        resultPdf.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2018-06-09
      • 2017-02-25
      • 1970-01-01
      相关资源
      最近更新 更多