|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Débuté par Damien, 24 avr. 2019 16:48 - 6 réponses |
| |
| | | |
|
| |
Posté le 24 avril 2019 - 16:48 |
Bonjour,
J'ai un service windev pour faire des impressions. Lorsque l'imprimante est un générateur de pdf comme foxit ou pdfcreator, etc, il arrive qu'une fenêtre s'ouvre pour enregistrer le pdf.
Dans d'autre langage, cela retourne une erreur ou ouvre la fenêtre si on est session ouverte.
Mais Windev plante.
Le service est planté de chez planté, figé sans rien renvoyé. Je dois même redémarrer le poste car l'arrêt du service ne se passe pas correctement. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 846 messages Popularité : +227 (347 votes) |
|
Posté le 24 avril 2019 - 20:17 |
Bonjour, La fonction iDestination devrait résoudre le problème
iDestination(iPDFGénérique, NomFichier) iImprimeEtat(ETAT_MonEtat)
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posté le 25 avril 2019 - 11:02 |
Bonjour,
J'utilise iDestination mais c'est l'utilisateur qui sélectionne son imprimante. Si sur le poste il y a pdfcreator par exemple et qu'il sélectionne pdf creator quand celui-ci est paramétré pour demander l'enregistrement du pdf ce qui est courant, on est dans une incohérence avec un service Windows, le problème c'est que Windev ne gère pas et plante, c'est sauvage. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 846 messages Popularité : +227 (347 votes) |
|
Posté le 26 avril 2019 - 10:18 |
Bonjour, Je suppose que la sélection se fait via iParamètre() Quoiqu'il en soit, avant l'impression tu peux tenter un truc comme ça
sNomImprimanteSélectionnée est chaîne
sNomImprimanteSélectionnée=iInfoImprimante() SI sNomImprimante="PDF Creator" ALORS iParamètre("Microsoft Print to PDF") FIN
...
iParamètre(sNomImprimanteSélectionnée)
Par ailleurs, je suppose que tu es en W24 (pour les versions antérieures, ce n'est pas ici.) Si ce n'est pas le cas, as tu patché ta version avec le correctif d'impression ?
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posté le 26 avril 2019 - 16:27 |
C'était un exemple PDF Creator.
Je parle de programmes commerciaux pas d'un petit programme que je fais pour moi. Donc il va être difficile de trouver des palliatifs à tout et ce n'est pas vraiment le but, sinon adieu le dev 10x plus vite...
Oui W24. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 487 messages Popularité : +24 (30 votes) |
|
Posté le 27 avril 2019 - 12:22 |
slt tu peux proposer a ton client la liste de ses imprimante
sliste est une chaîne sliste = iListeImprimante() POUR TOUTE chaîne sImpr de sliste SEPAREE PAR RC ZoneRépétéeAjoute(ZR_imprimantes,sImpr) FIN ZoneRépétéeSelectMoins(ZR_imprimantes) , et imprimer sur celle qu'il a choisit avec le code fourni par Voroltinquo
-- José |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 846 messages Popularité : +227 (347 votes) |
|
Posté le 27 avril 2019 - 12:33 |
Tout vérifier peut en effet s'avérer très long et la procédure risque de devenir caduque lors de la sortie d'un nouveau produit de création. Toutefois, il s'avère que la plupart des "imprimantes" PDF comportent la chaîne "PDF" dans leur description. On peut transformer le code écrit plus haut comme ceci :
sNomImprimanteSélectionnée est chaîne
sNomImprimanteSélectionnée=iInfoImprimante() SI ChaineOccurence(sNomImprimanteSélectionnée,"PDF")>1 ALORS iParamètre("Microsoft Print to PDF") FIN
Quid des configurations "exotiques" (i.e. qui ne comportent pas "PDF".)
On peut contourner le problème en incluant leur nom dans un tableau initialisé "en dur" en début de programme (gtabPDFExotique par exemple) en début de programme. Soit à priori lorsque le problème est connu lors du développement, soit à posteriori dans le cas d'un retour client (création d'un patch.)
sNomImprimanteSélectionnée est chaîne sImprimanteExotique est chaîne
sNomImprimanteSélectionnée=iInfoImprimante() SI ChaineOccurence(sNomImprimanteSélectionnée,"PDF")>1 ALORS iParamètre("Microsoft Print to PDF") SINON POUR TOUT sImprimanteExotique de gtabPDFExotique SI sNomImprimanteSélectionnée=sImprimanteExotique ALORS iParamètre("Microsoft Print to PDF") RETOUR FIN FIN *
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|