ActiveX PDF
Stagiaire WDF
Inscrit:
08/11/2006 15:47
De Suisse
Post(s): 32
Bonjour,

Je suis bloqué avec une demande qui semble ultra-simple et qui ne l'est pas:

Créer un programme pour afficher des PDF mais sans aucun outils permettant la copie ou l'impression.

Ma solution actuelle :

Ouvrir le document avec l'activeX de adobe et par dessus cet active-x ajouter un champ image en transparence.

Tout fonctionne à merveille jusqu'a :
- Un utilisateur utilise le Writer 6.0 pour afficher ces PDF et donc bloque le programme car le 7 n'est par défaut.
- La version 7.1 est différente et donc problème...

Ma question est simple :
Comment connaitre l'axtiveX actif sur un poste client
ou mieux :
Comment forcer un activeX dans windev (en l'ajoutant dans l'install par exemple). Car je serai obligé de recompler à chaque fois mon programme avec le bon activeX (si je l'ai)

Si par hazard, quelqu'un connait un autre activeX que celui de Adobe pour les PDF, je suis prenneur

Bonne semaine

JF Georgy

Contribution le : 29/01/2007 19:26
Créer un fichier PDF de la contribution Imprimer


Re: ActiveX PDF
Stagiaire WDF
Inscrit:
13/04/2005 13:54
Post(s): 32
Bonjour,

Pour ne pas avoir à gérer les différentes versions d'acrobat reader, il vaut mieux passer par l'activex Internet Explorer.
Il doit déjà y avoir des posts qui en parlent sur le forum. Je crois que la solution à ce problème en vient déjà.

Exemple de code :
			// Procédure qui permet d'initialiser l'activeX dynamiquement
			// L'ActiveX est-il installé ?
			SI PAS RegistreExiste("HKEY_CLASSES_ROOT\Shell.Explorer") ALORS
				Erreur("Cette application nécessite Internet Explorer 4 minimum")
				FinProgramme()	
			FIN
			// Chargement de l'ActiveX
			ACTACROBAT="Shell.Explorer"
			// Vérification de la présence de l'objet Shell.Explorer
			objTest est un objet OLE dynamique = actacrobat
			SI objTest = Null ALORS
				libérer objTest
				Erreur("Le navigateur du poste n'est pas internet explorer, vous ne pouvez pas afficher les documents PDF")
			FIN
			libérer objTest
		FIN
		// Chargement du fichier
		Message("Chargement du fichier "+F_NomfichPdf)
		ACTACROBAT>>navigate(F_NomfichPdf)
		Multitâche(-1)

Dans ce code ACTABROBAT est un objet activex déclaré sur la fenêtre sans précision, il est affecté dynamiquement à Internet explorer.
En espérant que celà résolve ton problème.
Bon Dev,

Contribution le : 30/01/2007 10:57
Créer un fichier PDF de la contribution Imprimer


Re: ActiveX PDF
Stagiaire WDF
Inscrit:
08/11/2006 15:47
De Suisse
Post(s): 32
Malheureusement non, J'avais déjà trouvé le post correspondant mais dans mon cas, cela déplace le problème

Le but est de limiter les possibilités des utilisateurs : SURTOUT LA SAUVEGARDE ET L'IMPRESSION....


Dans l'init de mon ActiveX j'ai les lignes suivantes

ACTACROBAT>>setPageMode(0)
//pas de barre d'outil
ACTACROBAT>>setShowToolbar(Faux)
//pas d'ascenseur
ACTACROBAT>>setShowScrollbars(Faux)


et j'avait "juste" crée des boutons de type

ACTACROBAT>>gotoFirstPage()
ACTACROBAT>>gotoPreviousPage()
ACTACROBAT>>gotoNextPage()
ACTACROBAT>>gotoLastPage()


Ce qui me permettait de naviguer dans le PDF. L'interface "natif" de acrobat étant bloqué par "l'image" placé dessus

Avec le transfert dans le shell.explorer, je n'ai plus ces solutions

Merci tout de même et si tu as une autre solution (je ne suis pas doué en ActiveX)

JFG

Contribution le : 30/01/2007 15:10
Créer un fichier PDF de la contribution Imprimer


Re: ActiveX PDF
Stagiaire WDF
Inscrit:
13/04/2005 13:54
Post(s): 32
La référence de l'objet activex Acrobat reader dans la base de registre est Pdf.pdfCtrl.N
N est égal à 1 pour la version 4, 5 pour la version 5, et 6 pour la version 6.
La référence pour la version 7 est AcroPDF.PDF.1

Je te suggère ce code
VL_Objtest est un objet Automation dynamique
VL_TableVersion est chaîne="pdf.pdfctrl.1;pdf.pdfctrl.5;pdf.pdfctrl.6;AcroPDF.PDF.1;"
VL_Version est une chaîne
VL_VersionTrouvee est une chaîne
VL_i est entier
TANTQUE SansEspace(VL_VersionTrouvee)=""
	VL_i++
	VL_Version=SansEspace(ExtraitChaîne(VL_TableVersion,VL_i,";"))
	SI VL_Version=EOT ALORS
		VL_VersionTrouvee="AUCUNE"
	SINON
		SI VL_Version<>"" ALORS
			QUAND EXCEPTION DANS
				VL_Objtest=allouer un objet Automation VL_Version
			FAIRE
				libérer VL_Objtest	
			SINON
				VL_VersionTrouvee=VL_Version
				libérer VL_Objtest
			FIN
		FIN
	FIN
FIN
Info(VL_VersionTrouvee)

et derrière tu reprends ce que tu avais avant.
Tu peux mettre la chaine de controle dans un fichier de paramètres pour pouvoir la modifier si d'autres versions se présentent.
Bon Dev,

Contribution le : 30/01/2007 17:36
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2