1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Questions générale
Sujet n° 730 |
Convertir file pdf en txt |
le 27/08/2014 : 15:28 par Nico
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 merci pour ta réponse cordialement Nico |
|
|
Réponse n° 1 -------- le 31/08/2014 : 02:13 par 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) |
|
|
Réponse n° 2 -------- le 02/09/2014 : 23:55 par nico
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 ) 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 (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 |
|
|
Réponse n° 5 -------- le 03/09/2014 : 17:54 par 3Stone
Administrateur
|
Citation : 3stoneMais 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 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 Cordialement, Pierre (3Stone) |
|
|
Réponse n° 6 -------- le 03/09/2014 : 18:16 par 3Stone
Administrateur
|
Écrite pour tester... voilà la petite fonction 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) |
|
|
Réponse n° 7 -------- le 03/09/2014 : 22:47 par nico
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
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 |
|
|
Réponse n° 8 -------- le 03/09/2014 : 23:00 par nico
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
cela proviendrait-il de la fonction call shell(...)?
merci
cordialement
Nico |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|