OVH Cloud OVH Cloud

VB et PDF

7 réponses
Avatar
Novax
Bonjour,
je repose ici une question que j'avais deja evoquée il y a quelques mois.

N'ayant pas trouvé de solution a mon probleme qui me parait assez classique
je me retourne vers vous.

Voila j'ai une application qui VB avec une base de données
Je dois pouvoir ouvrir un pdf a une page donnée ou faire une recherche par
mot cle dans le pdf
Pour la recherche je pense que cela va etre difficile par contre l'ouverture
d'un pdf a une page doit etre possible ( je l'ai vu fonctionner)
et impossible d'y arriver.
J'ai meme tenter l'ouverture du pdf dans un navigateur avec un lien du type
fichier.pdf#page =numeropage et rien
Ca doit quand meme pas etre si compliqué que ca.
Je n'ai rien trouvé sur google ou toutes les reponses ne se regroupent pas .
Je ne souhaitepas non plus utilisé une librairie de type pdflib ( rapport au
cout )

Merci par avance

Franck

7 réponses

Avatar
Alain CROS
Bonjour.

Pour la recherche, je passe la main.
Pour l'ouverture sur une page donnée :

Private Declare Function FindExecutable& Lib "shell32" Alias "FindExecutableA" _
(ByVal lpFile$, ByVal lpDirectory$, ByVal lpResult$)

Private Function TrouveEXE$(LeFile$)
Dim Exe$
Const MAX_PATH& = 260&
Exe = Space$(MAX_PATH)
FindExecutable LeFile, "", Exe
TrouveEXE = Left$(Exe, InStr(Exe, vbNullChar) - 1&)
End Function 'AC

Sub AffichePdf(Fich$, Page&)
Dim Canal&
Canal = DDEInitiate("acroview", "Control")
DDEExecute Canal, "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"
DDETerminate Canal
End Sub 'AC

Sub LancePdfPage6()
Dim Fich$
Fich = "Le Nom Complet du fichier pdf"
Shell TrouveEXE(Fich), vbNormalFocus
AffichePdf Fich, 6&
End Sub 'AC

Alain CROS

"Novax" a écrit dans le message de news: cb690d$eee$
Bonjour,
je repose ici une question que j'avais deja evoquée il y a quelques mois.

N'ayant pas trouvé de solution a mon probleme qui me parait assez classique
je me retourne vers vous.

Voila j'ai une application qui VB avec une base de données
Je dois pouvoir ouvrir un pdf a une page donnée ou faire une recherche par
mot cle dans le pdf
Pour la recherche je pense que cela va etre difficile par contre l'ouverture
d'un pdf a une page doit etre possible ( je l'ai vu fonctionner)
et impossible d'y arriver.
J'ai meme tenter l'ouverture du pdf dans un navigateur avec un lien du type
fichier.pdf#page =numeropage et rien
Ca doit quand meme pas etre si compliqué que ca.
Je n'ai rien trouvé sur google ou toutes les reponses ne se regroupent pas .
Je ne souhaitepas non plus utilisé une librairie de type pdflib ( rapport au
cout )

Merci par avance

Franck




Avatar
Novax
Bonjour alain et merci de votre reponse rapide

J'ai juste un petit souci avec ma fonction DDEinitiate ( et certainement ce
qui va avec ) qui refuse d'obtenperer.
Pourquoi mon Vb refuse de la reconaitre " fonction non definie, Il faut
ajouter une librairie?

Franck

et encore merci


"Alain CROS" a écrit dans le message de
news:
Bonjour.

Pour la recherche, je passe la main.
Pour l'ouverture sur une page donnée :

Private Declare Function FindExecutable& Lib "shell32" Alias


"FindExecutableA" _
(ByVal lpFile$, ByVal lpDirectory$, ByVal lpResult$)

Private Function TrouveEXE$(LeFile$)
Dim Exe$
Const MAX_PATH& = 260&
Exe = Space$(MAX_PATH)
FindExecutable LeFile, "", Exe
TrouveEXE = Left$(Exe, InStr(Exe, vbNullChar) - 1&)
End Function 'AC

Sub AffichePdf(Fich$, Page&)
Dim Canal&
Canal = DDEInitiate("acroview", "Control")
DDEExecute Canal, "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"
DDETerminate Canal
End Sub 'AC

Sub LancePdfPage6()
Dim Fich$
Fich = "Le Nom Complet du fichier pdf"
Shell TrouveEXE(Fich), vbNormalFocus
AffichePdf Fich, 6&
End Sub 'AC

Alain CROS

"Novax" a écrit dans le message de news:


cb690d$eee$
> Bonjour,
> je repose ici une question que j'avais deja evoquée il y a quelques


mois.
>
> N'ayant pas trouvé de solution a mon probleme qui me parait assez


classique
> je me retourne vers vous.
>
> Voila j'ai une application qui VB avec une base de données
> Je dois pouvoir ouvrir un pdf a une page donnée ou faire une recherche


par
> mot cle dans le pdf
> Pour la recherche je pense que cela va etre difficile par contre


l'ouverture
> d'un pdf a une page doit etre possible ( je l'ai vu fonctionner)
> et impossible d'y arriver.
> J'ai meme tenter l'ouverture du pdf dans un navigateur avec un lien du


type
> fichier.pdf#page =numeropage et rien
> Ca doit quand meme pas etre si compliqué que ca.
> Je n'ai rien trouvé sur google ou toutes les reponses ne se regroupent


pas .
> Je ne souhaitepas non plus utilisé une librairie de type pdflib (


rapport au
> cout )
>
> Merci par avance
>
> Franck
>
>




Avatar
Alain CROS
Bonjour.

Milles excuses.
Ceci fonctionne avec Excel mais pas avec vb.
Les commandes DDE ne fonctionne pas de la même manière.
J'essaierai de l'adapter pour vb si j'ai le temps et si j'y arrive.

Alain CROS

"Novax" a écrit dans le message de news: cb7412$jhq$
Bonjour alain et merci de votre reponse rapide

J'ai juste un petit souci avec ma fonction DDEinitiate ( et certainement ce
qui va avec ) qui refuse d'obtenperer.
Pourquoi mon Vb refuse de la reconaitre " fonction non definie, Il faut
ajouter une librairie?

Franck

et encore merci


"Alain CROS" a écrit dans le message de
news:
> Bonjour.
>
> Pour la recherche, je passe la main.
> Pour l'ouverture sur une page donnée :
>
> Private Declare Function FindExecutable& Lib "shell32" Alias
"FindExecutableA" _
> (ByVal lpFile$, ByVal lpDirectory$, ByVal lpResult$)
>
> Private Function TrouveEXE$(LeFile$)
> Dim Exe$
> Const MAX_PATH& = 260&
> Exe = Space$(MAX_PATH)
> FindExecutable LeFile, "", Exe
> TrouveEXE = Left$(Exe, InStr(Exe, vbNullChar) - 1&)
> End Function 'AC
>
> Sub AffichePdf(Fich$, Page&)
> Dim Canal&
> Canal = DDEInitiate("acroview", "Control")
> DDEExecute Canal, "[DocOpen(" & """" & Fich & """" & ")]" & _
> "[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"
> DDETerminate Canal
> End Sub 'AC
>
> Sub LancePdfPage6()
> Dim Fich$
> Fich = "Le Nom Complet du fichier pdf"
> Shell TrouveEXE(Fich), vbNormalFocus
> AffichePdf Fich, 6&
> End Sub 'AC
>
> Alain CROS
>
> "Novax" a écrit dans le message de news:
cb690d$eee$
> > Bonjour,
> > je repose ici une question que j'avais deja evoquée il y a quelques
mois.
> >
> > N'ayant pas trouvé de solution a mon probleme qui me parait assez
classique
> > je me retourne vers vous.
> >
> > Voila j'ai une application qui VB avec une base de données
> > Je dois pouvoir ouvrir un pdf a une page donnée ou faire une recherche
par
> > mot cle dans le pdf
> > Pour la recherche je pense que cela va etre difficile par contre
l'ouverture
> > d'un pdf a une page doit etre possible ( je l'ai vu fonctionner)
> > et impossible d'y arriver.
> > J'ai meme tenter l'ouverture du pdf dans un navigateur avec un lien du
type
> > fichier.pdf#page =numeropage et rien
> > Ca doit quand meme pas etre si compliqué que ca.
> > Je n'ai rien trouvé sur google ou toutes les reponses ne se regroupent
pas .
> > Je ne souhaitepas non plus utilisé une librairie de type pdflib (
rapport au
> > cout )
> >
> > Merci par avance
> >
> > Franck
> >
> >
>
>




Avatar
Alain CROS
Bonjour.

J'ai fait quelques essais, ça a l' air de fonctionner.

Une Form avec 1 CommandButton Command1 et 1 Label Label1
Le Label permet la connection DDE, il peut être Visible = False.

Dans le module de la Form

Private Sub Command1_Click()
LancePdfPage6
End Sub

Dans 1 module standard

Private Declare Function FindExecutable& Lib "shell32" Alias "FindExecutableA" _
(ByVal lpFile$, ByVal lpDirectory$, ByVal lpResult$)

Private Function TrouveEXE$(LeFile$)
Dim Exe$
Const MAX_PATH& = 260&
Exe = Space$(MAX_PATH)
FindExecutable LeFile, "", Exe
TrouveEXE = Left$(Exe, InStr(Exe, vbNullChar) - 1&)
End Function 'AC

Sub AffichePdf(Fich$, Page&)
With Form1.Label1
.LinkMode = vbLinkNone
.LinkTopic = "acroview|Control"
.LinkMode = vbLinkManual
.LinkExecute "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"
.LinkMode = vbLinkNone
End With
End Sub 'AC

Sub LancePdfPage6()
Dim Fich$
Fich = "Le Nom Complet du fichier pdf"
Shell TrouveEXE(Fich), vbNormalFocus
AffichePdf Fich, 6&
End Sub 'AC

Alain CROS
Avatar
Novax
Bonjour,
damned j'ai encore un message d'erreur
"aucune application externe n'a repondu a l'appel dde"
il ouvre bien acrobat (vide) et le message s'affiche
avec une erreur sur
.LinkExecute "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"


et encore merci alain pour ton aide

Franck

"Alain CROS" a écrit dans le message de
news:
Bonjour.

J'ai fait quelques essais, ça a l' air de fonctionner.

Une Form avec 1 CommandButton Command1 et 1 Label Label1
Le Label permet la connection DDE, il peut être Visible = False.

Dans le module de la Form

Private Sub Command1_Click()
LancePdfPage6
End Sub

Dans 1 module standard

Private Declare Function FindExecutable& Lib "shell32" Alias


"FindExecutableA" _
(ByVal lpFile$, ByVal lpDirectory$, ByVal lpResult$)

Private Function TrouveEXE$(LeFile$)
Dim Exe$
Const MAX_PATH& = 260&
Exe = Space$(MAX_PATH)
FindExecutable LeFile, "", Exe
TrouveEXE = Left$(Exe, InStr(Exe, vbNullChar) - 1&)
End Function 'AC

Sub AffichePdf(Fich$, Page&)
With Form1.Label1
.LinkMode = vbLinkNone
.LinkTopic = "acroview|Control"
.LinkMode = vbLinkManual
.LinkExecute "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) &


")]"
.LinkMode = vbLinkNone
End With
End Sub 'AC

Sub LancePdfPage6()
Dim Fich$
Fich = "Le Nom Complet du fichier pdf"
Shell TrouveEXE(Fich), vbNormalFocus
AffichePdf Fich, 6&
End Sub 'AC

Alain CROS




Avatar
Alain CROS
Bonjour.

Je ne peux guère t'aider plus.
Ceci fonctionne chez moi avec Win98, VB5 que ce soit Acrobat ou le Reader.
Tu peux essayer avec une boucle d'attente entre
Shell TrouveEXE(Fich), vbNormalFocus
et
AffichePdf Fich, 6&

Alain CROS

"Novax" a écrit dans le message de news: cb8n9k$d49$
Bonjour,
damned j'ai encore un message d'erreur
"aucune application externe n'a repondu a l'appel dde"
il ouvre bien acrobat (vide) et le message s'affiche
avec une erreur sur
.LinkExecute "[DocOpen(" & """" & Fich & """" & ")]" & _
"[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) & ")]"


et encore merci alain pour ton aide

Franck



Avatar
Novax
Grand MERCI a alain pour ses reponses sur un sujet tordu et pointu.
Cela fonctionne parfaitement
Le coup de la boucle ....c'etait ca
Encore Merci

Franck
Heureux

"Alain CROS" a écrit dans le message de
news:
Bonjour.

Je ne peux guère t'aider plus.
Ceci fonctionne chez moi avec Win98, VB5 que ce soit Acrobat ou le Reader.
Tu peux essayer avec une boucle d'attente entre
Shell TrouveEXE(Fich), vbNormalFocus
et
AffichePdf Fich, 6&

Alain CROS

"Novax" a écrit dans le message de news:


cb8n9k$d49$
> Bonjour,
> damned j'ai encore un message d'erreur
> "aucune application externe n'a repondu a l'appel dde"
> il ouvre bien acrobat (vide) et le message s'affiche
> avec une erreur sur
> .LinkExecute "[DocOpen(" & """" & Fich & """" & ")]" & _
> "[DocGoTo(" & """" & Fich & """" & "," & (Page - 1&) &


")]"
>
>
> et encore merci alain pour ton aide
>
> Franck
>