Comment débloquer un “sécurisé” (lecture seule) PDF en Python?

En Python, je suis en utilisant pdfminer pour lire le texte d'un fichier pdf avec le code ci-dessous ce message. Maintenant, je reçois un message d'erreur disant:

File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfpage.py", line 124, in get_pages
    raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
PDFTextExtractionNotAllowed: Text extraction is not allowed: <cStringIO.StringO object at 0x7f79137a1
ab0>

Quand j'ouvre ce fichier pdf avec Acrobat Pro, il s'avère qu'il est sécurisé (ou "protégé"). De ce lien cependant, j'ai lu qu'il y a une multitude de services qui permettent de désactiver cette protection en lecture facilement (par exemple pdfunlock.com. Lors d'une plongée dans la source de pdfminer, je vois que l'erreur ci-dessus est générée sur ces lignes.

if check_extractable and not doc.is_extractable:
    raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)

Puisqu'il y a une multitude de services qui permettent de désactiver cette protection en lecture à l'intérieur d'une seconde, je présume que c'est vraiment facile à faire. Il semble que .is_extractable est un simple attribut de la doc, mais je ne pense pas que c'est aussi simple que de changer .is_extractable à Vrai..

Quelqu'un sait comment je peux désactiver la lecture de protection sur un fichier pdf à l'aide de Python? Tous les conseils sont les bienvenus!

================================================

Vous trouverez ci-dessous le code avec lequel je suis actuellement extraire le texte de lecture non protégés.

def getTextFromPDF(rawFile):
    resourceManager = PDFResourceManager(caching=True)
    outfp = StringIO()
    device = TextConverter(resourceManager, outfp, codec='utf-8', laparams=LAParams(), imagewriter=None)
    interpreter = PDFPageInterpreter(resourceManager, device)

    fileData = StringIO()
    fileData.write(rawFile)
    for page in PDFPage.get_pages(fileData, set(), maxpages=0, caching=True, check_extractable=True):
        interpreter.process_page(page)
    fileData.close()
    device.close()

    result = outfp.getvalue()

    outfp.close()
    return result
Avez-vous essayé de changer .is_extractable à Vrai? Il y a effectivement une chance raisonnable que cela fonctionnerait.
Avez-vous essayer de passer le mot de passe? pour la page en PDFPage.get_pages(fileData, set(), maxpages=0, mot de passe=mot de passe,la mise en cache=True, check_extractable=True):

OriginalL'auteur kramer65 | 2015-01-28