[WD11] - Imprimer un fichier PDF existant ?
Débuté par pcdev2, 07 sep. 2007 12:37 - 12 réponses
Posté le 07 septembre 2007 - 12:37
Bonjour, J'ai plusieurs fichier PDFs que je voudrais envoyer en impression à partir d'un programme windev 11. Cela est-il possible ? Je sais que l'on peut créer sois-même les pdfs (déjà fait) mais une fois les fichiers créés, peut-on les imprimer ? Merci d'avance Cordialement David
Posté le 07 septembre 2007 - 12:54
PROCEDURE ImpressionFichier(ListeFichiers,Imprimante="",Nb=1) NomFichier est chaîne b est entier c est entier NomPromgrammeAssocie est chaîne NbSecondes est entier ImpDef est chaîne = iInfoImprimante(Faux,iNomImprimante) EtatImpression est booléen SELON Imprimante CAS "" CAS "?" iParamètre() AUTRE CAS iConfigure(Imprimante,Faux) FIN BOUCLE b++ NomFichier=ExtraitChaîne(ListeFichiers,b,";") SI NomFichier=EOT ALORS SORTIR SI fRep(NomFichier,frFichier)<>"" ALORS EtatImpression=Vrai NomPromgrammeAssocie=WindowsNomAppliAssociee(NomFichier,0) SI NomPromgrammeAssocie<>"" ALORS POUR c=1 A Nb SI LanceAppliAssociée(NomFichier, "print") ALORS Multitâche(200) SINON EtatImpression=Faux SORTIR FIN FIN FIN FIN FIN SI Imprimante<>"" ALORS iConfigure(ImpDef,Faux) FIN RENVOYER EtatImpression PROCEDURE WindowsNomAppliAssociee(Fic,Type=1) // Type=0 -> nom de l'exe de l'appli associée // Type=1 -> chemin de l'exe de l'appli associée // Type=2 -> Titre de l'appli associée // Type=3 -> les 3 séparés par TAB SI Fic="" ALORS RENVOYER "" NomFichier est une chaîne = Fic SI Position(Fic,"\")>0 ALORS NomFichier=ExtraitChaîne(Fic,ChaîneOccurrence(Fic,"\")+1,"\") FIN Extension est chaîne SI Position(NomFichier,".")>0 ALORS Extension=ExtraitChaîne(NomFichier,2,".") SINON Extension=NomFichier FIN SI Extension="" ALORS RENVOYER "" NomClasse est chaîne = RegistreLit("HKEY_CLASSES_ROOT\."+Extension,"") SI NomClasse="" ALORS RENVOYER "" CharRetour est chaîne SI Type<>2 ALORS NomProg est une chaîne c est entier NomPromgrammeAssocie est chaîne = RegistreLit("HKEY_CLASSES_ROOT\"+NomClasse+"\Shell\Open\Command","") SELON Vrai CAS Position(NomPromgrammeAssocie," %")>0 NomPromgrammeAssocie=ExtraitChaîne(NomPromgrammeAssocie,1," %") CAS Position(NomPromgrammeAssocie,""""+"%")>0 NomPromgrammeAssocie=ExtraitChaîne(NomPromgrammeAssocie,1,""""+"%") AUTRE CAS FIN SI Position(NomPromgrammeAssocie,"""")>0 ALORS NomPromgrammeAssocie=Remplace(NomPromgrammeAssocie,"""","") // Chaine du style : "c:\programfiles..." "%1" TANTQUE fRep(NomProg,frFichier)="" c++ SI ExtraitChaîne(NomPromgrammeAssocie,c,"\")=EOT ALORS SORTIR SI NomProg<>"" ALORS NomProg=NomProg+"\" NomProg=NomProg+ExtraitChaîne(NomPromgrammeAssocie,c,"\") FIN SINON NomProg=NomPromgrammeAssocie FIN NomProg=SansEspace(NomProg) SI Type=1 OU Type=3 ALORS CharRetour=NomProg FIN SI Type=0 OU Type=3 ALORS SI CharRetour<>"" ALORS CharRetour=CharRetour+TAB CharRetour=CharRetour+ExtraitChaîne(NomProg,ChaîneOccurrence(NomProg,"\")+1,"\") FIN FIN SI Type=2 OU Type=3 ALORS SI CharRetour<>"" ALORS CharRetour=CharRetour+TAB CharRetour=CharRetour+RegistreLit("HKEY_CLASSES_ROOT\"+NomClasse,"") FIN RENVOYER CharRetour David a exposé le 07/09/2007 : Bonjour, J'ai plusieurs fichier PDFs que je voudrais envoyer en impression à partir d'un programme windev 11. Cela est-il possible ? Je sais que l'on peut créer sois-même les pdfs (déjà fait) mais une fois les fichiers créés, peut-on les imprimer ? Merci d'avance Cordialement David
-- Pierre BOUSQUET " Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 07 septembre 2007 - 13:26
//Si on dispose d'Adobe Reader on peut faire : LanceAppliAssociée("F:\Mon Répertoire_PDF\MONFICHIER.PDF","PRINT") //successivement pour chaque fichier (mettre en liste)
Posté le 07 septembre 2007 - 13:57
Bonjour merci pour ces deux réponses. Elles sont assez proches finalement de ce que j'ai testé (API ShellExecute de windows qui correspond à la fonction LanceAppliAssociée), mais ça ne convient pas vraiment car lorsque l'on lance l'impression avec acrobat, ce dernier s'ouvre pour imprimer, ce qui est assez disgracieux et de plus il reste ouvert après l'impression ... Cordialement David
Posté le 07 septembre 2007 - 14:42
ben sinon si tu pars du principes que tu utilises Acrobat reader pour imprimer, il faut utiliser les OLE et parcourirhttp://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/iac/IACReference.pdf je crois qu'il y a une fonction open et print David a formulé ce vendredi :Bonjour merci pour ces deux réponses. Elles sont assez proches finalement de ce que j'ai testé (API ShellExecute de windows qui correspond à la fonction LanceAppliAssociée), mais ça ne convient pas vraiment car lorsque l'on lance l'impression avec acrobat, ce dernier s'ouvre pour imprimer, ce qui est assez disgracieux et de plus il reste ouvert après l'impression ... Cordialement David
-- Pierre BOUSQUET " Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 07 septembre 2007 - 15:15
non justement c'est ce que je ne veux pas. Acrobat reader n'est pas la bonne solution pour imprimer. Je cherche justement autre chose qui pourrait ne pas utiliser l'association de fichier avec acrobat. David
Posté le 07 septembre 2007 - 18:34
Salut ! Va voir sur le site www.be-dev , dans vitrine logiciel il a un programme gratuit qui fait cela en ligne de commande et dans le forum, il y a même moyen de télécharger le projet ! Bien à toi ! -- Marcel Berman Président de Be-Dev Membre du conseil d'administration de Windasso Be-dev et Windasso sont des groupes d'utilisateurs de Windev, Webdev et Windev Mobile produits par la société PC-Soft (France)
Posté le 08 septembre 2007 - 01:51
On 7-Sep-2007, marcel.berman@managingbusiness.be wrote:Salut !
Va voir sur le site
www.be-dev , dans vitrine logiciel il a un programme
gratuit qui fait cela en ligne de commande et dans le forum, il y a même
moyen de télécharger le projet !
Bien à toi !
oups .... www.be-dev.be sorry ! -- Marcel Berman Président de Be-Dev Membre du conseil d'administration de Windasso Be-dev et Windasso sont des groupes d'utilisateurs de Windev, Webdev et Windev Mobile produits par la société PC-Soft (France)
Posté le 10 septembre 2007 - 11:42
Bonjour, oui c'est exactement ce que je viens de développer en fait, mais ça me pose aussi quelques problèmes ... ça ne veut pas imprimer (rien ne se passe lors du "AX>>print()" ou "AX>>printall()" ou autre ...) Pourtant le doc se charge bien dans l'activex et je peux faire "imprimer" manuellement dans la zone activex, mais l'appel d'impression activex , lui, ne fonctionne pas. Votre projet ne fonctionne donc pas non plus (même principe). En fait ça a imprimé la première fois, et depuis plus moyen ... Mais bon je vais trouver. Sinon je me suis inscrit sur le forum histoire de voir un peu ce qu'il s'y passe. Merci David
Posté le 11 décembre 2007 - 17:06
Bonjour, j'utilise les DDE d'acrobat pour faire cela. J'ai même le choix de l'imprimante avec cette commande. Voici l'exemple: //************************* envoi sur l'imprimante ********************************* id est un entier aplilancee est un entier afficheerreur est un entier SI PAPIERTEMP = 1 ALORS //---On boucle pour attendre le lancement de acrobat reader aplilancee = ExeLancé("Acrobat.exe") TANTQUE ExeLancé("Acrobat.exe") = Faux DDELance("C:\Program Files\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe",DDEIconise,Faux) FIN //---Connexion à la liaison DDE de acrobat id = DDEConnecte("acroview","control") afficheerreur = DDEErreur(id) //---Dans le cas où Acrobat n'avait pas terminé de charger ses plug-ins TANTQUE id = 0 id = DDEConnecte("acroview","control") FIN //---On sélectionne temporairement l'imprimante de notre choix //iConfigure("hp880c",Vrai) iConfigure(LISTE_IMP..ValeurAffichée,Vrai) //---On ouvre le document à imprimer DDEExécute(id,"[DocOpen("+Caract(34)+fichierpdffinal+Caract(34)+")]") //---On lance une impression silencieuse sur l'imprimant de notre choix DDEExécute(id,"[FilePrintTo("+Caract(34)+fichierpdffinal+Caract(34)+","+Caract(34)+iInfoImprimante(Vrai,iNomImprimante)+Caract(34)+","+Caract(34)+iInfoImprimante(Vrai,iNomDriver)+Caract(34)+","+Caract(34)+iInfoImprimante(Vrai,iNomPort)+Caract(34)+")]") //---On ferme le document PDF // trace("[DocClose("+Caract(34)+nomfichierpdf+Caract(34)+")]") DDEExécute(id,"[DocClose("+Caract(34)+fichierpdffinal+Caract(34)+")]") //---On quitte acrobat reader // trace("[AppExit()]") DDEExécute(id,"[AppExit()]") DDEDéconnecte(id) FIN LISTE_IMP est une liste contenant toutes les imprimantes installée sur le pc. voici son code d'initialisation sListeImprimante est une chaîne sListeImprimante = iListeImprimante() ListeAjoute(LISTE_IMP, sListeImprimante) Salutation
Posté le 12 décembre 2007 - 11:18
Salut ! Tu peux trouver un projet WD11 qui utilise l'activex Acrobat surwww.be-dev.be dans la rubrique Téléchargement. Bien à toi ! -- Marcel Berman Président de Be-Dev (www.be-dev.be ) Membre du conseil d'administration de Windasso Be-dev et Windasso sont des groupes d'utilisateurs de Windev, Webdev et Windev Mobile produits par la société PC-Soft (France)
Posté le 05 mars 2011 - 10:23
pourrait avoir les coordonnées email de Marcel Berman Président de Be-Dev afin qu'il me transmettre URL du projet WD11 qui utilise l'activex Acrobat car je ne retrouve pas le projet sur la section telechargement du site Be-Dev Merci
Posté le 05 mars 2011 - 23:39
vas sur le site be-dev.be dans membre... "KITSON" <kitokoroland@yahoo.fr> a écrit dans le message de groupe de discussion : 3ed3299f01b1e02d75a9e3ac4366f656@news.pcsoft... pourrait avoir les coordonnées email de Marcel Berman Président de Be-Dev afin qu'il me transmettre URL du projet WD11 qui utilise l'activex Acrobat car je ne retrouve pas le projet sur la section telechargement du site Be-Dev Merci