2010-11-02 6 views
1

En Python, j'ai des fichiers générés par ReportLab. Maintenant, j'ai besoin d'extraire quelques pages de ce PDF et cacher des informations confidentielles.Masquer les informations dans un fichier PDF en Python

Je peux créer un fichier PDF avec des points noircis et utiliser pyPdf pour fusionner la page, mais les gens peuvent toujours sélectionner et copier-coller les informations sous les points noircis.

Existe-t-il un moyen de rendre ces lieux totalement confidentiels? Par exemple, je dois cacher les adresses sur les pages, comment le ferais-je?

Merci,

Répondre

1

Fondamentalement, vous devrez retirer les commandes de dessin de texte correspondant dans le flux de contenu de la page du PDF. Il est beaucoup plus facile de générer les pages deux fois, une fois avec les informations confidentielles, une fois sans elles.

Il est peut-être possible (je ne connais pas assez ReportLab) de créer spécifiquement le PDF de manière à ce que les informations confidentielles soient plus facilement accessibles (par exemple en tant que XObjects séparés) pour suppression. Encore vous devriez faire des opérations de bas niveau assez sur le pdf - que je conseillerais contre.

0

(Désolé, je n'ai pas pu se connecter quand je posté la question ...)

Malheureusement, le document ne peut être régénéré à volonté (sensible au contexte), et les fichiers PDF (environ 35) sont 3000+ pages. Je pensais à utiliser pdf2ps et pdf2ps en arrière, mais il y a beaucoup de qualité.

pdf2ps -dLanguageLevel = 3 entrée.pdf - | ps2pdf14 - output.pdf

Et si j'utilise "pdftops" à la place, le texte est toujours sélectionnable. S'il y a un moyen de le rendre non sélectionnable comme avec "pdf2ps" mais avec une meilleure qualité, il le fera aussi.

+1

Les éléments non sélectionnables peuvent ne pas être cohérents entre différents visualiseurs de fichiers PDF, par ex. pdftotext l'extrait, mais pas Adobe Reader, etc. S'il s'agit d'informations sensibles, vous devrez les supprimer complètement. Tout le reste peut être contourné, plus ou moins facilement. Vous pourriez cependant écrire une expression régulière pour supprimer les lignes critiques de la représentation .ps (et conserver la qualité en utilisant les bonnes options [essayez pdf2ps et pdftops, etc.]). – smilingthax

+0

Je n'ai jamais travaillé avec des fichiers PS avant (en plus de les convertir) ... Je pense que je peux toujours essayer. Je reviendrai avec mes conclusions. – Danosaure

+0

Je pense que ce qui se passe avec pdf2ps est que les polices sont soit converties en polices Bitmap, ou converties en chemins (dans ce cas, la police s'imprime bien, elle semble seulement mauvaise à l'écran). En raison du réencodage, et si une table inverse n'est pas incluse, il est assez difficile de trouver automatiquement la correspondance entre le glyphide et le caractère. Dès que le texte semble correct (par exemple, pdftops), les polices Type1 ou TrueType sont utilisées et la correspondance glyph-to-char est essentiellement connue, ce qui signifie également que l'extraction du texte est "facile". Si la police est réencodée, l'obfuscation en supprimant certaines tables pourrait être possible. – smilingthax

Questions connexes