Récupérer le contenu des champs d'un pdf - formulaire
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008
-
18 juil. 2006 à 09:58
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008
-
21 juil. 2006 à 13:41
Bonjour à toutes et à tous !
Je souhaiterais contrôler l'ouverture de fichier pdf (ça c'est fait) pour ensuite récupérer le contenu de certains champs - les pdf étant tous en formulaire avec les mêmes champs (ça c'est ce qu'il me reste à faire...).
Pour l'ouverture des fichiers pdf j'utilise le code suivant :
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 18 juil. 2006 à 15:40
Je crois que Acrobat enregistre sous un format assez simple commencant par un slash , le nom du champ puis un espace et la valeur duc champ encadré d'une parenthèse ouvrante et d'une parenthèse fermante soit:
"/" + nom_de_champ + " ("+ valeur_du_champ + ")"
Rien de scientifique, je récupére ainsi des champs assez classiques (titre et auteur princuiaplement) donc rien à voir avec ton formulaire
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008 19 juil. 2006 à 08:34
Merci pour cette info.
Pourrais-tu juste me préciser quel code tu utilise pour "accéder" au fichier pdf (un peu à l'image des classeurs excel : "activeworkbook.activesheet."). Pour le moment je n'ai pas encore trouvé les bons "termes" pour obtenir "l'accès" à la feuille active de mon pdf.
Merci d'avance pour ton coup de pouce.
Nicdouille
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 20 juil. 2006 à 09:54
Je n'utilise aucun objet pariculier
'
Public Type FileProp
sTitle As String
sAuthor As String
sComments As String
sSubject As String
sKeyWords As String
End Type
Sub ReadPdf(sFile As String, sDataSearched As String, ByRef sDataFound As String)
Dim iFile1 As Integer
Dim i As Integer
Dim sLine As String
Dim sBuf As String
Dim iFrom As Integer, iTo As Integer
iFile1 = FreeFile
sDataFound = ""
Open sFile For Input As #iFile1
sBuf = String(LOF(iFile1), " ")
Line Input #iFile1, sBuf
If InStr(sBuf, sDataSearched) Then
iFrom = InStr(sBuf, sDataSearched) + Len(sDataSearched)
iTo = InStr(sBuf, ")")
sDataFound = Mid(sLine, iFrom, iTo)
End If
Close #iFile1
End Sub
Public Sub readPDFHeadProperties(sFile As String, _
ByRef oProp As FileProp)
Dim s As String
Call ReadPdf(sFile, "/Author (", s)
oProp.sAuthor = s
Call ReadPdf(sFile, "/Title (", s)
oProp.sTitle = s
Call ReadPdf(sFile, "/Subject (", s)
oProp.sSubject = s
Call ReadPdf(sFile, "/Keywords (", s)
oProp.sKeyWords = s
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008 20 juil. 2006 à 10:16
Merci beaucoup pour ta réponse !
Je pense que ça doit correspondre à ce que je recherche mais j'ai juste une dernière petite question :
Comment fais-tu pour lancer ces lignes sous vba Excel (dès qu'il y a des propriétés dans les parenthèses de la fonction Sub, vb ne les considère plus comme des macros et ne les propose pas à l'exécution).
Merci d'avance pour ta réponse et pour le moment, un grand merci pour ton aide précieuse !
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008 20 juil. 2006 à 15:30
Je viens d'installer Visual Basic 6 mais je ne parviens pas à lancer les fonctions.
J'ai créé une "form1" avec un bouton et j'ai placé ton code dans un "module1".
La fonction associée à mon bouton est :
Private Sub Command1_Click()
Call readPDFHeadProperties
End Sub
En utilisant le bouton j'ai l'indication : "Erreur de compilation : Cet argument n'est pas facultatif."
Pourrais-tu m'envoyer le code pour utiliser ces fonctions stp ou m'envoyer par la messagerie du site ton projet contenant ce code si tu le veux bien. J'avoue que cela fais un bon moment que je ne me suis pas replongé dans du visual basic pur...
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 20 juil. 2006 à 16:17
TOn code doit être
Private Type FileProp
sTitle As String
sAuthor As String
sComments As String
sSubject As String
sKeyWords As String
End Type
Private Sub Command1_Click()
Dim prop as FileProp
Call readPDFHeadProperties(("C:\CHEMIN\Acrobat.exe C:\MonPdf.pdf",Prop)
' soit ceci
if prop.sTitle<>"" then Msgbox prop.sTitle
if prop.sAuthor<>"" then Msgbox prop.sAuthor
' soit remplir des champs TextBox "Title" et "Author" dans ta form
Title.text=prop.sTitle
Author.text=prop.sAuthor
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008 21 juil. 2006 à 09:21
C'est encore moi !
Désolé pour le dérangement...
Je bloque sur l'ouverture du pdf : message d'erreur "Erreur d'exécution '52' : Nom ou numéro de fichier incorrect." se rapportant à la ligne :
Open sFile For Binary Access Read As #iFile1
de la fonction Sub ReadPdf
Pour info, mon code est :
Private Sub Command1_Click()
Dim prop As FileProp
Call readPDFHeadProperties("C:\Program Files\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe C:\INITIAL 03_03_06.pdf", prop)
If prop.sTitle <> "" Then MsgBox prop.sTitle
If prop.sAuthor <> "" Then MsgBox prop.sAuthor
end sub
Merci d'avance pour ton coup de pouce.
P.S. : Je n'ai pas copier le code :
Private Type FileProp
sTitle As String
sAuthor As String
sComments As String
sSubject As String
sKeyWords As String
End Type
puisqu'il est déjà déclaré dans public (et me bloque si je le déclare en Private)
nicdouille3
Messages postés13Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 3 juillet 2008 21 juil. 2006 à 12:07
Re-salut,
Je suis désolé mais je n'ai pas tout à fait saisi ce que tu me demande de faire...
Si ça peut te donner une orientation sur la source d'erreur, voici le code inscrit dans mon projet :
MODULE 1 :
Public Type FileProp
sTitle As String
sAuthor As String
sComments As String
sSubject As String
sKeyWords As String
End Type
Sub ReadPdf(sFile As String, sDataSearched As String, ByRef sDataFound As String)
Dim iFile1 As Integer
Dim i As Integer
Dim sLine As String
Dim sBuf As String
Dim iFrom As Integer, iTo As Integer
iFile1 = FreeFile
sDataFound = ""
Open sFile For Binary Access Read As #iFile1
sBuf = String(LOF(iFile1), " ")
Line Input #iFile1, sBuf
If InStr(sBuf, sDataSearched) Then
iFrom = InStr(sBuf, sDataSearched) + Len(sDataSearched)
iTo = InStr(sBuf, ")")
sDataFound = Mid(sLine, iFrom, iTo)
End If
Close #iFile1
End Sub
Public Sub readPDFHeadProperties(sFile As String, ByRef oProp As FileProp)
Dim s As String
Call ReadPdf(sFile, "/Author (", s)
oProp.sAuthor = s
Call ReadPdf(sFile, "/Title (", s)
oProp.sTitle = s
Call ReadPdf(sFile, "/Subject (", s)
oProp.sSubject = s
Call ReadPdf(sFile, "/Keywords (", s)
oProp.sKeyWords = s
End Sub
FORM 1 :
Private Sub Command1_Click()
Dim prop As FileProp
Call readPDFHeadProperties("C:\Program Files\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe C:\Documents and Settings\Nicolas\Bureau\INITIAL 03_03_06.pdf", prop)
If prop.sTitle <> "" Then MsgBox prop.sTitle
If prop.sAuthor <> "" Then MsgBox prop.sAuthor
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 21 juil. 2006 à 12:18
L'argument Dans l'appel à ReadPdfHeadProperties
est le chemin du fichier pdf seulement
Enlève l'appel à Acrobat.exe
Call readPDFHeadProperties("C:\Documents and Settings\Nicolas\Bureau\INITIAL 03_03_06.pdf", prop)