| Impression Pdf dans état Windev |
Une solution pour éditer un état windev puis le fusionner avec mes fichiers Pdf qui font plusieurs pages.
Il faut utiliser une dll externe gsdll32.dll //Permet d'initialiser la dll PROCEDURE InitDLL() //strDLL est une chaîne //renvoie un entier différent de 0 si DLL chargée SI gnBl_Echargedll = 0 ALORS gnBl_Echargedll = ChargeDLL("gsdll32.dll") FIN PROCEDURE Imprime() //imprime mon état avec une sortie PDF iDestination(iPDF,sNomPdfEtat) iImprimeEtat(ETA_AGT_AGENTS_NDF_COMPTA) //ajoute dans un tableau TableauAjouteLigne(tabJustif,sNomPdfEtat) //boucle sur mes fichiers Pdf et les ajoute au tableau HLitPremier(sdReqJustif) TANTQUE PAS HEnDehors(sdReqJustif) TableauAjouteLigne(tabJustif,sdReqJustif.fic_justif) HLitSuivant(sdReqJustif) FIN SI TableauOccurrence(tabJustif) > 0 ALORS SI fFichierExiste("NDF.pdf") ALORS SI PAS fSupprime("NDF.pdf") ALORS Info("Génération du fichier impossible.","Vérifiez que le fichier NDF.pdf n'est pas ouvert.","Si c'est le cas, merci de le fermer avant de demander l'édition.") FIN FIN //fusionne tous les pdf ret est un booléen = FusionnerPDF(tabJustif,"NDF.pdf") SI PAS ret ALORS Info("Un problème est survenu durant la génération du fichier pdf") FIN SI ret ALORS //Lance mon PDF générer LanceAppliAssociée("NDF.pdf") FIN FIN // Résumé : <indiquez ici ce que fait la procédure> // Syntaxe : //[ <Résultat> = ] FusionnerPDF (<tabFichiers>, <strFichierSortie>) // // Paramètres : // tabFichiers : <indiquez ici le rôle de tabFichiers> // strFichierSortie : <indiquez ici le rôle de strFichierSortie> // Valeur de retour : // booléen : // Aucune // // Exemple : // Indiquez ici un exemple d'utilisation. // //tabFichiers=Tableau de chaine des fichiers à fusionner (la fusion se fera dans l'ordre du tableau) //strFichierSortie=Fichier à générer PROCEDURE FusionnerPDF(tabFichiers,strFichierSortie) iCode est un entier système iCode1 est un entier système iTemp est un entier e_Quit est un entier = -101 iNbParam est un entier tabParam est un tableau de 0 chaîne strFichier est une chaîne bRetour est un booléen = Faux bFichiersOk est un booléen sG_GS_TYPE_PDF est une chaîne = "pdfwrite" SI TableauOccurrence(tabFichiers)> 0 ALORS bFichiersOk = Vrai POUR TOUT ELEMENT strFichier DE tabFichiers SI PAS fFichierExiste(strFichier) ALORS bFichiersOk = Faux Info("Le fichier suivant est absent : "+strFichier,"Merci de l'indiquer à votre assistance informatique") SORTIR FIN FIN SI bFichiersOk ALORS InitDLL() SI gnBl_Echargedll <> 0 ALORS iCode = API("gsdll32.dll","gsapi_new_instance",&iTemp,Null) SI iCode>= 0 ALORS TableauAjoute(tabParam,"-dSAFER") TableauAjoute(tabParam,"-dBATCH") TableauAjoute(tabParam,"-dNOPAUSE") TableauAjoute(tabParam,"-debug") TableauAjoute(tabParam,"-sDEVICE="+sG_GS_TYPE_PDF) TableauAjoute(tabParam,ChaîneConstruit("-sOutputFile=%1",strFichierSortie)) POUR TOUT ELEMENT strFichier DE tabFichiers TableauAjoute(tabParam,""+strFichier+"") FIN iNbParam = TableauOccurrence(tabParam) iCode = API("gsdll32.dll","gsapi_init_with_args",iTemp, iNbParam,&tabParam) iCode1 = API("gsdll32.dll","gsapi_exit",iTemp) SI iCode = 0 _OU_ iCode = e_Quit ALORS iCode = iCode1 FIN API("gsdll32.dll","gsapi_delete_instance",iTemp) SI iCode = 0 _OU_ iCode = e_Quit ALORS bRetour = Vrai FIN SINON Erreur() FIN FIN FIN FIN RENVOYER bRetour |
No comments:
Post a Comment