Forum - Questions générale - Sujet n°730

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par 3Stone le 30/10/2014 : 12:48  Sujet n° 730  Convertir file pdf en txt

le 27/08/2014 : 15:28
par Nico

Anonyme

visiteur

Bonjour 3Stone,

je recherche un code VBA qui me permettrait de convertir un fichier .pdf en fichier .txt

j'ai récupéré sur le net le code suivant

Dim AcroXApp As Acrobat.AcroApp
                Dim AcroXAVDoc As Acrobat.AcroAVDoc
                Dim AcroXPDDoc As Acrobat.AcroPDDoc
                Dim Filename As String
                Dim jsObj As Object
                Dim NewFileName As String

                Filename = "C:\Documents and Settings\xxx\Desktop\file01.pdf"
                NewFileName = "C:\Documents and Settings\xxx\Desktop\file.txt"

                Set AcroXApp = CreateObject("AcroExch.App")
                'AcroXApp.Show

                Set AcroXAVDoc = CreateObject("AcroExch.AVDoc")
                AcroXAVDoc.Open Filename, "Acrobat"

                Set AcroXPDDoc = AcroXAVDoc.GetPDDoc


                Set jsObj = AcroXPDDoc.GetJSObject


                jsObj.SaveAs NewFileName, xlTextWindows



                AcroXAVDoc.Close False
                AcroXApp.Hide
                AcroXApp.Exit

malheureusement et malgré l'ajout des références via la commande outil, la commande suivante: Set AcroXApp = CreateObject("AcroExch.App")
bloque avec pour erreur "1 composant ActiveX ne peut pas créer d'objet"

peux-tu m'aider?

je sais qu'il existe des appli pour convertir des fichiers mais je dois analyser 576 fichiers d

merci pour ta réponse

cordialement

Nico

 sujet clos  Haut

[]   

DébutPrécédent [ 1 2 ] SuivantFin
Réponse n° 1
--------
le 31/08/2014 : 02:13
par 3Stone

3Stone

Administrateur

Bonjour,

Le code suppose que tu as la version Adobe Acrobat pour créer les PDF.

Mais, tu dis que tu dois analyser les fichiers... mais cela concerne à faire une recherche de mots ou plus ?

Cela dépendra également des PDF et leur format... Respectent t-ils la norme ?
En faisant une recherche de mot avec l'explorer de fichiers Windows, obtient tu des réponses ?

Sujet intéressant en tout cas, faudrait que je me penche sur la méthode.

Cordialement,
Pierre (3stone)
  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 2
--------
le 02/09/2014 : 23:55
par nico

Anonyme

visiteur

bonjour 3Stone,

sur mon poste est installé

Acrobat installé : C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe
    Version : 9.1.0.2009022700
    Date de création : 2009/02/27
    Heure de création : 17:10:32

il ne s'agit pas de la bonne version?

mes fichiers .pdf sont des fichiers qui respectent bien la norme et sont générés par mon prestataire (récemment racheté par une sté Belge s) ayant tous la même nomenclature - exemple page 2, 3ème ligne: Date du rapport le: 2 sept 2014

j'ai besoin de récupérer cette info dans tous les fichiers .pdf.

actuellement je transforme manuellement confused (via l'ouverture du .pdf) le fichier en version texte (Fichier -> Enregistrer au format texte...) puis je lance ma requête afin d'importer les fichiers texte dans ma base via DoCmd.TransferText et ainsi récupérer l'info pg 5, 3ème ligne, mid(Champ n, 21, len(Champ n))

comme j'ai énormément de fichiers l'automatisation de la tranformation des .pdf en txt m'intéresse

merci

cordialement

Nico

  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 3
--------
le 03/09/2014 : 04:54
par 3Stone

3Stone

Administrateur

Bonjour,
 
Citation :

sur mon poste est installé
Acrobat installé : C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe


 Je ne possède pas le générateur de PDF de Adobe... je ne sais donc pas si c'est bon.
Ce qui m'étonne, c'est que tu as dans ton chemin : "Reader 9.0\Reader\", comme si c'était juste le "PDF Reader" de Adobe. Si c'est le cas, je ne suis pas sûr que cela fonctionne et soit "pilotable" en ligne de commande.

Pour ce qui est du code, il devrait effectivement fonctionner selon mes recherches.

Pour l'erreur "création d'objet" que tu as, tu peux regarder ce qu'indique Microsoft...

 
Code : xhtml
Ce problème peut se produire lorsque l'une des conditions suivantes est remplie :
Les objets d'accès aux données ne sont pas correctement enregistrés.
- ou -
Une ou plusieurs références sont manquantes.
- ou -
Une référence à la base de données de l'utilitaire n'est pas valide.
- ou -
Vous ne disposez pas des autorisations nécessaires pour les bibliothèques requises.
- ou -
Un fichier de l'Assistant est endommagé.
 
Je vais installer le Reader de Adobe et voir ce que cela donne !

A suivre...

Pierre (3Stone)
  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 4
--------
le 03/09/2014 : 14:45
par 3Stone

3Stone

Administrateur

Bonjour,

Comme je le supposait, pour utiliser le code (qui est en principe fonctionnel), c'est n'est pas le Reader qu'il faut, mais bien la version Standard ou Pro.

Une autre solution serait de trouver un utilitaire pilotable par batch et qui sauve le PDF en texte. Mais une recherche sur le Net ne m'a pas permis de trouver cela en gratuit...

Cordialement,
Pierre (3Stone)

  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 5
--------
le 03/09/2014 : 17:54
par 3Stone

3Stone

Administrateur

Citation : 3stone

Mais une recherche sur le Net ne m'a pas permis de trouver cela en gratuit...

 
Et bien, si !

Xpdf est le nom de ce petit bijoux wink
On le trouve à l'adresse suivante.
On récupère la version pour Windows : xpdfbin-win-3.04.zip et le décompacte.
Selon la version de Windows, on regarde dans le répertoire "bin32" ou "bin64" pour récupérer le petit exécutable "pdftotext.exe" qui ne demande pas d'installation.

La suite est simple :
  • on dépose l'exécutable dans le répertoire de la base
  • on se crée une petite fonction à laquelle on transmet le nom du PDF qui sera sauvé au format texte.

J'ai testé... et cela devrais répondre à tes besoins.

En fait, cela remplace le code que tu souhaitais utiliser, mais sans nécessiter un produit Adobe payant biggrin

Cordialement,
Pierre (3Stone)

  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 6
--------
le 03/09/2014 : 18:16
par 3Stone

3Stone

Administrateur

Écrite pour tester...  voilà la petite fonction wink
 
Code : xhtml

Function PDF2Text(sFilePDF As String, sFileTXT As String)
Dim sCurrentPath As String
Dim sBatch As String

'répertoire courant
sCurrentPath = Application.CurrentProject.Path

'ligne de commande
sBatch = sCurrentPath & "\pdftotext.exe " & sFilePDF & " " & sFileTXT

Call Shell(sBatch)

End Function
 
Cordialement,
Pierre (3Stone)
  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 7
--------
le 03/09/2014 : 22:47
par nico

Anonyme

visiteur

bonsoir 3Stone,

merci beaucoup pour le temps passé dans cette recherche

j'ai testé ton code après avoir suivi scrupuleusement des indications, sans succès confused

si j'utilise le fichier pdftotext.exe en bin64 cela me donne une erreur (normal)

si j'utilise le fichier en bin32 la fonction Call Shell("D:\pdftotext.exe test.pdf test1.txt") va bien chercher le fichier pdftotext.exe (erreur si non présent dans le path) mais aucun fichier test1.txt dans mon exemple est créé - aucune erreur signalé?

pourtant si j'ouvre mon fichier test.pdf et utilise la commande fichier/enregistrer au format texte... sous adobe, mon fichier source est bien converti en txt. donc pour moi le problème ne vient pas du fichier .pdf

peut-être as-tu une piste pour solutionner cette absence de création du fichier .txt? dans l'attente je continue mes recherches

encore merci

cordialement

Nico

  clos par 3Stone le 30/10/2014 : 12:48  Haut
Réponse n° 8
--------
le 03/09/2014 : 23:00
par nico

Anonyme

visiteur

par contre si je lance la comande D:\pdftotext.exe test.pdf test1.txt via le bouton windows démarrer/exécuter... ça fonctionne smile

cela proviendrait-il de la fonction call shell(...)?

merci

cordialement

Nico

  clos par 3Stone le 30/10/2014 : 12:48  Haut
DébutPrécédent [ 1 2 ] SuivantFin
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut