#1 Wed 29 October 2008 17:45
- steve_leconte15
- Juste Inscrit !
- Date d'inscription: 25 Apr 2006
- Messages: 3
Ouvrir un pdf depuis Mapbasic
Bonjour,
Je réalise une appli en Mapbasic. Je voudrais que lorsque l'utilisateur clique sur un objet la fiche descriptive de celle ci (en .pdf) s'ouvre.
J'arrive à obtenir l'adresse du fichier pdf à ouvrir mais je ne sais quelle ligne de code permet cette action. Es que mapbasic es capable de faire ça ? Si oui quelle est la commande ?
Merci de votre aide!
Steve
Hors ligne
#2 Wed 29 October 2008 17:56
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Ouvrir un pdf depuis Mapbasic
Bonjour
Il faut que l'une des colonnes (ma_colonne) de la table affichée dans le layer n (ou nommée "bidule") comporte un chemin (absolu ou relatif) vers un fichier pdf pour pouvoir utiliser la commande Set Map...
genre:
Set Map Layer 1 Activate Using ma_colonne On Objects
Set Map Layer bidule Activate Using ma_colonne On Labels Objects Relative Path Off
Hors ligne
#3 Wed 29 October 2008 17:57
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: Ouvrir un pdf depuis Mapbasic
Bonjour
Une recherche sur les Hotlink va certainement vous donnez un coup de main.
Daniel
De retour à la géomatique
Hors ligne
#4 Thu 30 October 2008 10:02
- steve_leconte15
- Juste Inscrit !
- Date d'inscription: 25 Apr 2006
- Messages: 3
Re: Ouvrir un pdf depuis Mapbasic
Bonjour et merci des conseils.
J'ai un plus suivi les conseils de Maurice mais je n'arrive pas à obtenir le résulat attendu.
Au niveau de la table nommée TOUS je me positionne sur l'objet selectionné. J'exécute la commande
set map layer 2 activate using "c:\steve\" + tous.id_ouvrage + ".pdf" on labels objects relative path off
où 2 est le layer de la table TOUS et id_ouvrage la composante permettant de retrouver le .pdf.
Lorsque j'execute la manip il n'y a pas de message d'erreur mais il ne se passe, à priori, rien. J'ai beau vérifier dans les table ouverte, pas de trace de mon pdf.
Je me demande comment on peut avoi un pdf ouvert dans MapInfo. Ce que je penssais, à la base, c'était ouvrir automatiquement le pdf avec pdfReader. Ya t-il une solution ?
Hors ligne
#5 Thu 30 October 2008 10:18
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Ouvrir un pdf depuis Mapbasic
Bon...je me suis trompé en suivant la piste du hotlink
Ce que vous voulez c'est que à un moment du programme, l'utilisateur clique sur un objet et qu'un pdf s'ouvre
Deux voies:
- soit on munit avant la table des ouvrages d'une colonne hotlink (c'est ma première réponse) ET on donne la main à l'utilisateur pour qu'il clique avec le pointeur hotlink (l'éclair jaune) sur un des ouvrages
- soit on ne prépare rien dans la table ouvrage et on donne la main à l'utilisateur pour qu'il clique avec un pointeur quelconque (flêche noire, croix...) sur un ouvrage. Il faut alors récupérer le X,Y du clic utilisateur, déterminer quel ouvrage correspond, extraire son nom "id_ouvrage" et lancer une commande genre: Run Program "AcroRd32.exe chemin/id_ouvrage.pdf"....commande qui devra être interprétée car elle mélange constantes, variables et guillemets et s'écrire:
cmd="Run Program "+chr$(34)+"AcroRd32.exe C:\steve\"+id_ouvrage+".pdf"+chr$(34)
Run Command cmd
Hors ligne
#6 Thu 30 October 2008 10:44
- steve_leconte15
- Juste Inscrit !
- Date d'inscription: 25 Apr 2006
- Messages: 3
Re: Ouvrir un pdf depuis Mapbasic
Merci, excellent !!!
J'ai suivi la 2nde option et ça marche à merveille ! La seukl petite modif que j'ai dû faire c'est de mettre le lien en dur d'Adode
cmd = "run program " + chr$(34) + "C:\program files\adobe\Reader 9.0\reader\AcroRd32.exe c:\steve\" + tous.id_ouvrage + ".pdf" + chr$(34)
run Command cmd
Encore merci pour cette aide rapide et précise.
Hors ligne
#7 Wed 07 January 2009 15:36
- Acibi
- Participant occasionnel
- Lieu: Canada
- Date d'inscription: 7 Jan 2009
- Messages: 12
Re: Ouvrir un pdf depuis Mapbasic
Existe t'il une manière de faire ouvrir le pdf sans avoir à spécifier le chemin complet d'Adobe? L'application mapBasic auras à s'éxecuter sur de nombreux poste et je ne peut garantir que le chemin d'accès seras le même partout...
Edit : Peut-être un indice de piste : Peut-on utiliser le shellExecute comme en vb?
Dernière modification par Acibi (Wed 07 January 2009 15:50)
Hors ligne
#8 Wed 07 January 2009 16:59
- Acibi
- Participant occasionnel
- Lieu: Canada
- Date d'inscription: 7 Jan 2009
- Messages: 12
Re: Ouvrir un pdf depuis Mapbasic
Bon je suis arrivé à une solution :
DIM sCmd as String
sCmd = "run program"+ chr$(34) + "C:\WINDOWS\system32\cmd.exe /c"+ "doc\manuelUtilisateur.pdf"+ chr$(34)
run Command sCmd
Il faut que le document pdf soit situer dans le répertoire doc, qui lui est situé au même endroit que le .mbx..
Attention, votre nom de fichier ne doit PAS contenir d'espace!
Hors ligne
#9 Wed 07 January 2009 17:21
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Ouvrir un pdf depuis Mapbasic
Merci du suivi
Si tous les postes ont Acrobat Reader, bien installé et associé à l'extension pdf, on peu peut être se contenter de
sCmd = "Run Program "+chr$(34)+"AcroRd32.exe "+ApplicationDirectory$()+"doc\manuelUtilisateur.pdf"+ chr$(34)
run Command sCmd
Voire même de Run Program "AcroRd32.exe manuelUtilisateur.pdf", le pdf en question étant alors au même endroit que le mbx (c'est là que la recherche aura, a priori, lieu en premier par défaut)
A tester...
Hors ligne
#10 Wed 07 January 2009 18:24
- Acibi
- Participant occasionnel
- Lieu: Canada
- Date d'inscription: 7 Jan 2009
- Messages: 12
Re: Ouvrir un pdf depuis Mapbasic
Après quelque test, ma technique as des failles.
En effet, si après avoir ouvert le module mbx, on ouvre/sauvegarde des tables, il semble que le path par défault qui seras ouvert par cmd.exe seras celui de la table sur laquelle on a "jouer"..
Le réel problème avec mapBasic (dans ce cas-ci) est la non-gestion d'un caractére d'évitement pour pouvoir insérer un " dans une string (On peut cependant passer par chr$(34)) et surtout la non-gestion du " ' " pour permettre l'insertion d'un guillemets facilement dans une string...
Edit:La technique avec seulement le AcroRd32.exe ne fonctionne pas.. il faudra trouver autre chose
Re-Edit: Je suis relativement nouveau dans l'environnement mapInfo/mapBasic. Je suis habituer à des languages beaucoup plus évolué comme le C/C++/Java.. donc je rage un peu contre mapBasic en ce moment...
Dernière modification par Acibi (Wed 07 January 2009 18:26)
Hors ligne
#11 Wed 07 January 2009 20:15
- Acibi
- Participant occasionnel
- Lieu: Canada
- Date d'inscription: 7 Jan 2009
- Messages: 12
Re: Ouvrir un pdf depuis Mapbasic
Bon,
Je croit avoir trouver la solution!
Effectivement la réponse était du coté de ShellExecute dans le shell32.dll
Donc il faut d'abors déclarer la fonction ShellExecute :
(Dans mon .def)
DECLARE FUNCTION ShellExecute
Lib "shell32.dll" Alias "ShellExecuteA"(
ByVal hwnd as Integer,
ByVal lpOperation as String,
ByVal lpFile as String,
ByVal lpParameters as String,
ByVal lpDirectory as String,
ByVal nShowCmd as integer)
as Integer
Ensuite pour l'utiliser :
SUB OuvreManuel()
DIM sHelpFile as String
DIM nResult as Integer
sHelpFile = ApplicationDirectory$() + "doc\manuelUtilisateur.pdf"
nResult = ShellExecute(0,"open",sHelpFile,"","",1)
END SUB
J'ai finalement trouver la documentation sur le site de Microsoft
Le code peut être utilisé pour ouvrir tout types de fichier et windows se chargeras de l'ouvrir avec l'application par défault. Je crois que c'est la méthode la plus clean et la plus portable!
Bonne Journée!
Hors ligne
#12 Wed 17 March 2010 15:37
- régisj
- Participant occasionnel
- Date d'inscription: 3 Dec 2007
- Messages: 49
Re: Ouvrir un pdf depuis Mapbasic
Bonjour ACIBI,
Je n'ai aucune connaissance des API windows, mais j'aimerais bien pouvoir ouvrir un PDF depuis Mapbasic et utiliser votre méthode...
Code:
Donc il faut d'abors déclarer la fonction ShellExecute : (Dans mon .def) DECLARE FUNCTION ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"( ByVal hwnd as Integer, ByVal lpOperation as String, ByVal lpFile as String, ByVal lpParameters as String, ByVal lpDirectory as String, ByVal nShowCmd as integer) as Integer
De quel ".def" s'agit-il ?
Hors ligne
#13 Thu 26 April 2012 10:04
- paul.sok
- Participant occasionnel
- Date d'inscription: 20 Feb 2012
- Messages: 20
Re: Ouvrir un pdf depuis Mapbasic
Bonjour à tous,
Travaillant sous Mapbasic, je développe une appli permettant à l'utilisateur d'insérer, via une nouvelle fenetre, des photographies géoréférencées. J'ai donc pensé à utiliser la fonction Hotlink mais je n'y arrive pas.
Merci de votre réponse,
Bonne journée
Hors ligne