Convertir fichier PDF en fichier txt - Perl - Programmation
Marsh Posté le 11-03-2016 à 15:59:10
Ordonnance prend 2 "n"
Marsh Posté le 11-03-2016 à 16:32:40
A vrai dire je suis un peu étonné ou disons perdu. Hier (ou presque) tu demandais comment convertir au format pdf depuis un fichier texte, maintenant tu veux faire l'inverse? Si c'est pour éditer des pdfs il doit y avoir plus propre/simple je pense (à confirmer).
Marsh Posté le 11-03-2016 à 16:35:50
C'est parce que je souhaite modifier des PDF sans utiliser de logiciel et pour l'autre discussion je souhaite convertir des fichier lst pour ne plus pouvoir les modifier sans utiliser un logiciel tels que PDF Creator.
Marsh Posté le 11-03-2016 à 16:44:00
Pour modifier des PDF il y a des outils qui permettent de le faire directement, en passant par des fichiers .txt tu risques de perdre des infos (mise en page notamment). http://search.cpan.org/~cdolan/CAM [...] CAM/PDF.pm http://search.cpan.org/~ssimms/PDF [...] DF/API2.pm D'ailleurs le deuxième tu en parlais déjà dans l'autre sujet.
Marsh Posté le 11-03-2016 à 16:50:24
solerian a écrit : Cela te convient mieux ? |
Oui
Marsh Posté le 11-03-2016 à 18:10:15
solerian a écrit : C'est parce que je souhaite modifier des PDF sans utiliser de logiciel et pour l'autre discussion je souhaite convertir des fichier lst pour ne plus pouvoir les modifier sans utiliser un logiciel tels que PDF Creator. |
Si c'est juste pour ajouter ou retirer des pages à un document existant, c'est assez facile. Si c'est pour modifier le contenu d'une page déjà existante en PDF, ben je te souhaite bien du plaisir.
A+,
Marsh Posté le 14-03-2016 à 11:55:43
Pour retirer des pages:
Code :
|
Pour ajouter un fichier à la suite d'un autre:
Code :
|
A toi d'adapter selon tes besoins. Ou d'aller voir la doc de CAM::PDF pour une utilisation plus fine.
A+,
Marsh Posté le 14-03-2016 à 17:10:41
J'utilise toujours un fichier d'initialisation que voici :
[repertoire]
REP_FACTURE=C:\Users\baranowp\Documents\2016_01_07_08\facture\
REP_BULLETIN=C:\Users\baranowp\Documents\2016_02_04_05\bulletin_paie\
[fichier_facture]
FIC_1=C:\Users\baranowp\Documents\2016_01_07_08\facture\facture1.pdf
FIC_2=C:\Users\baranowp\Documents\2016_01_07_08\facture\facture2.pdf
FIC_3=C:\Users\baranowp\Documents\2016_01_07_08\facture\facture3.pdf
[fichier_paie]
FIC_4=C:\Users\baranowp\Documents\2016_02_04_05\bulletin_paie\paie1.pdf
FIC_5=C:\Users\baranowp\Documents\2016_02_04_05\bulletin_paie\paie2.pdf
Code :
|
J'ai installé le module CAM::PDF
Et voici mon message d'erreur :
Use of uninitialized value $content in pattern match (m//) at CStrawberry/perl/site/lib/CAM/PDF.pm line 301.
Use of uninitialized value $content in numeric gt (> ) at CStrawberry/perl/site/lib/CAM/PDF.pm line 311.
Use of uninitialized value $file in string eq at CStrawberry/perl/site/lib/CAM/PDF.pm line 314.
Use of uninitialized value $file in open at CStrawberry/perl/site/lib/CAM/PDF.pm line 327.
Use of uninitialized value $file in concatenation (.) or string at CStrawberry/perl/site/lib/CAM/PDF.pm line 342.
Can't locate object method "getRootDict" via package "C:\Users\baranowp\Documents\2016_01_07_08\facture\facture1.pdf" (p
erhaps you forgot to load "C:\Users\baranowp\Documents\2016_01_07_08\facture\facture1.pdf"?) at CStrawberry/perl/site/
lib/CAM/PDF.pm line 3786.
Marsh Posté le 14-03-2016 à 20:07:48
Bien évidemment, puisque vous faites ceci en 6e ligne: my $pdf = CAM::PDF->new(); et que le new doit se faire sur du contenu comme je fais ligne 25.
Les modules perls ont une doc sur les paramètres que prennent leurs fonctions, encore faudrait il la lire.
A+,
Marsh Posté le 15-03-2016 à 12:03:17
Lorsque je réalise ce programme je n'ai plus de message d'erreur :
Code :
|
lorsque j'exécute le programme il me renvoi tous les fichiers pdf se trouvant dans les repertoires factures et bulletin de paie maintenant il ne me plus qu'à comprendre comment fonctionne la fonction convert pour avoir mes fichiers PDF au format txt
Cordialement
Marsh Posté le 16-03-2016 à 09:05:59
J'ai réussi à installer le module CAM::PDF. Je souhaite juste convertir les fichiers PDF en format txt pour extraire des données
Marsh Posté le 16-03-2016 à 12:01:51
Code :
|
Comme la conversion pdf->txt n'est pas une science exacte, la conversion n'est jamais assurée d'être parfaite si le document est complexe.
A+,
Marsh Posté le 16-03-2016 à 14:31:29
Si mon fichier pdf contient plusieurs tableau il faut que je modifie ceci :
Code :
|
Marsh Posté le 16-03-2016 à 14:48:30
Si vous avez des tableaux, vous êtes mal barré, la structure d'un fichier pdf étant très différente de celle d'un fichier texte, vous n'êtes même pas sur que les fragments de texte vont être dans l'ordre voulu.
Il n'y a pas de solution miracle, le pdf est un format final, qui est pas conçu pour être exporté vers un autre format (surtout si la version du pdf est ancienne, et qu'il n'y a pas de structure hiérarchique dedans). En général, quand on veut récupérer le contenu d'un fichier pdf avec des tableaux, on fait appel à un OCR de bonne qualité, et on relit attentivement le résultat
Mon avis: récupérer le programme pdftohtml, appeler ce programme pour convertir vos documents pdf en xml, et travailler sur les documents xml générés en espérant que pdftohtml a fait du bon boulot.
A+,
Marsh Posté le 11-03-2016 à 14:18:37
Bonjour à tous,
Je souhaite convertir certains fichiers PDf au format txt.
Je pense à utiliser le module PDF::API2
mais je ne vois pas comment rédiger mon programme
je possède une boucle GetFilesList pour me lister tous les PDF et je vais en faire une seconde pour lister tout les fichiers txt.
Je pense m'appuyer sur un fichier d'initialisation qui contiendra les arborescences des différents fichiers PDF étant donné que je ne souhaite pas que l'on voit l'arborescence dans le programme.
Le contenu du fichier d'initialisation sera de la forme :
[fichier_pdf]
FACTURE_PDF=C:\facture_pdf\
BULLETIN_PAIE_PDF=C:\bulletin_paie_pdf\
ORDONNANCE_PDF=C:\ordonnance_pdf\
Dans le répertoire facture_pdf il y aura :
facture.pdf
facture1.pdf
facture2.pdf
etc...
Dans le répertoire bulletin_paie_pdf il y aura :
paie.pdf
paie1.pdf
paie2.pdf
etc ...
Dans le répertoire ordonnance_pdf il y aura :
ordonnance.pdf
ordonnance1.pdf
ordonnance2.pdf
etc ...
Le résultat que je souhaite obtenir est le suivant :
Dans le répertoire facture_pdf il y aura :
facture.pdf
facture1.pdf
facture2.pdf
et
facture.txt
facture1.txt
facture2.txt
Dans le répertoire bulletin_paie_pdf il y aura :
paie.pdf
paie1.pdf
paie2.pdf
et
paie.txt
paie1.txt
paie2.txt
Dans le répertoire ordonnance_pdf il y aura :
ordonnance.pdf
ordonnance1.pdf
ordonnance2.pdf
et
ordonnance.txt
ordonnance1.txt
ordonnance2.txt
Est-ce compréhensible ?
Je vous remercie d'avance pour votre aide.
Cordialement
Message édité par solerian le 11-03-2016 à 16:20:41