banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 sad
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 tongue

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 wink

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 wink

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

 

Pied de page des forums

Powered by FluxBB