예제 #1
0
def getTextPDF(pdfFileName, password=''):
    pdf_file = open(pdfFileName, 'rb')
    read_pdf = PdfFileReader(pdf_file)

    if password != '':
        read_pdf.decrypt(password)

    text = []
    for i in range(0, read_pdf.getNumPages() - 1):
        text.append(read_pdf.getPage(i).extractText())

    #return '\n'.join(text)
    return text
예제 #2
0
def decrypt(input, output, password, verbosity, **kwargs):
    """decrypt pdf.

pdfcli decrypt crypted.pdf -o clear.pdf -p password

"""
    source = PdfFileReader(input)
    source.decrypt(password)
    output_pdf = PdfFileWriter()
    for page in source.pages:
        output_pdf.addPage(page)
    if verbosity >= 1:
        click.echo("Writing %s" % output.name)
    output_pdf.write(output)
예제 #3
0
 def _load(self):
     with open(self.path, 'rb') as file:
         try:
             pdf = PdfFileReader(file)
             if pdf.isEncrypted:
                 # See https://github.com/mstamy2/PyPDF2/issues/51
                 # Some PDFs that open fine without a password in many apps, apparently
                 # have a password of an empty string
                 pdf.decrypt('')
             self._meta = {
                 k: _resolve_object(v)
                 for k, v in (pdf.getDocumentInfo() or {}).items()
             }
         except Exception as e:
             raise ParseError('Cannot parse PDF', self.path, e)
예제 #4
0
def decrypt_pdf(input_file: str, password: str):
    """
    Decrypts a file using PyPDF4 library.
    Precondition: A file is already encrypted
    """
    pdf_reader = PdfFileReader(open(input_file, 'rb'), strict=False)
    if not pdf_reader.isEncrypted:
        print(f"PDF File {input_file} not encrypted")
        return False, None, None
    pdf_reader.decrypt(password=password)
    pdf_writer = PdfFileWriter()
    try:
        for page_number in range(pdf_reader.numPages):
            pdf_writer.addPage(pdf_reader.getPage(page_number))
    except utils.PdfReadError as e:
        print(f"Error reading PDF File {input_file} = {e}")
        return False, None, None
    return True, pdf_reader, pdf_writer
예제 #5
0
def get_reader(filename, password):
    try:
        old_file = open(filename, 'rb')
        print("第一次解密")
    except Exception as err:
        print("打开失败" + str(err))
        return None

    pdf_reader = PdfFileReader(old_file, strict=False)
#     这个strict是确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是true
#     这个是创建读的实例
#   下面是解密操作
    if pdf_reader.isEncrypted:
        if password is None:
            print("文件被加密需密码")
            return None
        else:
            if pdf_reader.decrypt(password) != 1:
                print("密码不正确")
                return None
    if old_file in locals():
        old_file.close()
        return pdf_reader
예제 #6
0
    def get_reader(filename, password):
        try:
            old_file = open(filename, 'rb')
            print('run  jiemi1')
        except Exception as err:
            print('文件打开失败!' + str(err))
            return None

        # 创建读实例
        pdf_reader = PdfFileReader(old_file, strict=False)

        # 解密操作
        if pdf_reader.isEncrypted:
            if password is None:
                print('%s文件被加密,需要密码!' % filename)
                return None
            else:
                if pdf_reader.decrypt(password) != 1:
                    print('%s密码不正确!' % filename)
                    return None
        if old_file in locals():
            old_file.close()
        return pdf_reader