|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| ServiceWeb Chronopost et impression étiquette [WinDev 19] |
| Iniciado por m.archambaud, 12,may. 2015 11:32 - 6 respuestas |
| |
| | | |
|
| |
| Publicado el 12,mayo 2015 - 11:32 |
Bonjour,
J'utilise le service web de chronopost afin de générer des "lettres de transport". (Etiquettes avec code barre) Le service web me renvoie bien un étiquette PDF sous forme de contenu binaire mais je ne trouve pas de solution pour l'imprimer. J'utilise une imprimante thermique "Intermec EasyCoder PC4)
J'ai bien essayé d'ouvrir le PDF puis de l'imprimer via Adobe Reader mais l'étiquette PDF est au format A4. Il faut donc ajuster la page A4 au format des étiquettes de l'imprimante... la qualité n'est donc plus la même.
Pour ceux qui aimerait voir le code :
WS_Requete est un shippingV2 WS_Resultat est un shippingV2Response strucHeaderValue est un headerValue strucShipperValue est un shipperValue strucCustomerValue est un customerValue strucRecipientValue est un recipientValue strucRefValue est un refValue strucSkybillValue est un skybillValue
strucHeaderValue.idEmit = "CHRFR" strucHeaderValue.accountNumber = [Mon numéro de compte]
strucShipperValue.shipperCivility = "M" strucShipperValue.shipperName = "MonNom" strucShipperValue.shipperName2 = "" strucShipperValue.shipperAdress1 = "MonAdresse1" strucShipperValue.shipperAdress2 = "MonAdresse2" strucShipperValue.shipperZipCode = "44000" strucShipperValue.shipperCity = "Nantes" strucShipperValue.shipperCountry = "FR" strucShipperValue.shipperContactName = "NomContact" strucShipperValue.shipperPhone = "0202020202"
strucCustomerValue.customerCivility = "M" strucCustomerValue.customerName = "NomClient" strucCustomerValue.customerName2 = "" strucCustomerValue.customerAdress1 = "AdresseClient1" strucCustomerValue.customerAdress2 = "AdresseClient2 strucCustomerValue.customerZipCode = "75000" strucCustomerValue.customerCity = "Paris" strucCustomerValue.customerCountry = "FR"
// --------------------------------------------------------------- // Composition de la structure pour les données du destinataire // ---------------------------------------------------------------
strucRecipientValue.recipientName = "NomDestinataire" strucRecipientValue.recipientName2 = "" strucRecipientValue.recipientAdress1 = "AdresseDestinataire1" strucRecipientValue.recipientAdress2 = "AdresseDestinataire2" strucRecipientValue.recipientZipCode = "75000" strucRecipientValue.recipientCity = "Paris" strucRecipientValue.recipientCountry = "FR"
// --------------------------------------------------------------- // Composition de la structure pour les références expéditeur et destinataire // ---------------------------------------------------------------
strucRefValue.shipperRef = "Ref Exp" strucRefValue.recipientRef = "Ref Dest" //strucRefValue.customerSkybillNumber = ""
// --------------------------------------------------------------- // Composition de la structure pour les données du colis // ---------------------------------------------------------------
strucSkybillValue.evtCode = "DC" strucSkybillValue.productCode = SEL_Service strucSkybillValue.shipDate = DateVersChaîne(DateSys(), "AAAAMMJJ" + HeureVersChaîne(Maintenant, "HHMMSS")) strucSkybillValue.shipHour = 19 strucSkybillValue.weight = SAI_PoidsColis strucSkybillValue.weightUnit = "KGM" strucSkybillValue.service = DateVersJour(DateSys()) strucSkybillValue.objectType = SEL_Nature
// --------------------------------------------------------------- // Composition de la structure principale de la requête // ---------------------------------------------------------------
WS_Requete.headerValue = strucHeaderValue WS_Requete.shipperValue = strucShipperValue WS_Requete.customerValue = strucCustomerValue WS_Requete.recipientValue = strucRecipientValue WS_Requete.refValue = strucRefValue WS_Requete.skybillValue = strucSkybillValue WS_Requete.skybillParamsValue.mode = "THE" WS_Requete.password = [Mon mot de passe] //WS_Requete.modeRetour = "2"
// --------------------------------------------------------------- // Consommation du service // ---------------------------------------------------------------
WS_Resultat = shippingV2(WS_Requete)
PROC_VerifResultat(WS_Resultat)
PROCEDURE PROC_VerifResultat(WS_Resultat est un xsdEntité)
SI WS_Resultat.'return'.errorCode <> 0 ALORS Info("errorCode : " + WS_Resultat.'return'.errorCode, "errorMessage : " + WS_Resultat.'return'.errorMessage) FIN
fSauveBuffer("C:\Users\court\Desktop\" + WS_Resultat.'return'.skybillNumber + ".pdf", WS_Resultat.'return'.skybill) |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,mayo 2015 - 14:51 |
Bonjour Mickael
si j'ai bien compris, ton problème est que : - tu récupère un pdf au format A4 - seule une PARTIE de la page correspond à ton étiquette (le reste est vide) - tu ne dois imprimer QUE la partie étiquette
Dans ce cas, tu peux : - Afficher ton pdf dans un champ image - bien sur, ajuste le champ pour que seule la partie étiquette soit visible (100%, et la bonne dimension) - faire un dsauveimagexxx de ton champ image (uniquement l'étiquette, maintenant) - imprimer ton image/etiquette avec iimprimeImage - la qualité de l'étiquette correspondra à la taille du champ image
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Disponible : WXShowroom.com, WXReplication (open source) Bientôt : WXEDM (open source) Plus d'information sur http://fabriceharari.com
On 5/12/2015 3:32 AM, Mickael wrote:
Bonjour, J'utilise le service web de chronopost afin de générer des "lettres de transport". (Etiquettes avec code barre) Le service web me renvoie bien un étiquette PDF sous forme de contenu binaire mais je ne trouve pas de solution pour l'imprimer. J'utilise une imprimante thermique "Intermec EasyCoder PC4) J'ai bien essayé d'ouvrir le PDF puis de l'imprimer via Adobe Reader mais l'étiquette PDF est au format A4. Il faut donc ajuster la page A4 au format des étiquettes de l'imprimante... la qualité n'est donc plus la même. Pour ceux qui aimerait voir le code : WS_Requete est un shippingV2 WS_Resultat est un shippingV2Response strucHeaderValue est un headerValue strucShipperValue est un shipperValue strucCustomerValue est un customerValue strucRecipientValue est un recipientValue strucRefValue est un refValue strucSkybillValue est un skybillValue
strucHeaderValue.idEmit = "CHRFR" strucHeaderValue.accountNumber = [Mon numéro de compte]
strucShipperValue.shipperCivility = "M" strucShipperValue.shipperName = "MonNom" strucShipperValue.shipperName2 = "" strucShipperValue.shipperAdress1 = "MonAdresse1" strucShipperValue.shipperAdress2 = "MonAdresse2" strucShipperValue.shipperZipCode = "44000" strucShipperValue.shipperCity = "Nantes" strucShipperValue.shipperCountry = "FR" strucShipperValue.shipperContactName = "NomContact" strucShipperValue.shipperPhone = "0202020202"
strucCustomerValue.customerCivility = "M" strucCustomerValue.customerName = "NomClient" strucCustomerValue.customerName2 = "" strucCustomerValue.customerAdress1 = "AdresseClient1" strucCustomerValue.customerAdress2 = "AdresseClient2 strucCustomerValue.customerZipCode = "75000" strucCustomerValue.customerCity = "Paris" strucCustomerValue.customerCountry = "FR"
// --------------------------------------------------------------- // Composition de la structure pour les données du destinataire // ---------------------------------------------------------------
strucRecipientValue.recipientName = "NomDestinataire" strucRecipientValue.recipientName2 = "" strucRecipientValue.recipientAdress1 = "AdresseDestinataire1" strucRecipientValue.recipientAdress2 = "AdresseDestinataire2" strucRecipientValue.recipientZipCode = "75000" strucRecipientValue.recipientCity = "Paris" strucRecipientValue.recipientCountry = "FR"
// --------------------------------------------------------------- // Composition de la structure pour les références expéditeur et destinataire // ---------------------------------------------------------------
strucRefValue.shipperRef = "Ref Exp" strucRefValue.recipientRef = "Ref Dest" //strucRefValue.customerSkybillNumber = ""
// --------------------------------------------------------------- // Composition de la structure pour les données du colis // ---------------------------------------------------------------
strucSkybillValue.evtCode = "DC" strucSkybillValue.productCode = SEL_Service strucSkybillValue.shipDate = DateVersChaîne(DateSys(), "AAAAMMJJ" + HeureVersChaîne(Maintenant, "HHMMSS")) strucSkybillValue.shipHour = 19 strucSkybillValue.weight = SAI_PoidsColis strucSkybillValue.weightUnit = "KGM" strucSkybillValue.service = DateVersJour(DateSys()) strucSkybillValue.objectType = SEL_Nature
// --------------------------------------------------------------- // Composition de la structure principale de la requête // ---------------------------------------------------------------
WS_Requete.headerValue = strucHeaderValue WS_Requete.shipperValue = strucShipperValue WS_Requete.customerValue = strucCustomerValue WS_Requete.recipientValue = strucRecipientValue WS_Requete.refValue = strucRefValue WS_Requete.skybillValue = strucSkybillValue WS_Requete.skybillParamsValue.mode = "THE" WS_Requete.password = [Mon mot de passe] //WS_Requete.modeRetour = "2"
// --------------------------------------------------------------- // Consommation du service // ---------------------------------------------------------------
WS_Resultat = shippingV2(WS_Requete)
PROC_VerifResultat(WS_Resultat)
PROCEDURE PROC_VerifResultat(WS_Resultat est un xsdEntité)
SI WS_Resultat.'return'.errorCode <> 0 ALORS Info("errorCode : " + WS_Resultat.'return'.errorCode, "errorMessage : " + WS_Resultat.'return'.errorMessage) FIN
fSauveBuffer("C:\Users\court\Desktop\" + WS_Resultat.'return'.skybillNumber + ".pdf", WS_Resultat.'return'.skybill) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 19 mensajes |
|
| Publicado el 12,mayo 2015 - 15:27 |
| Avez-vous le lien du Webservice Chronopost ? |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,mayo 2015 - 15:58 |
@JFB : Voici le lien qui m'a permis d'importer le service web dans WinDev 19. https://www.chronopost.fr/shipping-cxf/ShippingServiceWS…
@Fabrice Harari : Merci pour votre réactivité. Le fichier PDF que je récupère n'est pas en deux parties. Au format THE je n'ai pas cette partie blanche, donc pas de problème. L'étiquette prend bien la totalité de la page A4.
La réponse de chronopost concernant ce même problème d'impression : "Si vous souhaitez imprimer sur une imprimante thermique compatible ZPL, vous pouvez indiquer le <mode> ZPL et vous obtiendrez l'étiquette ZPL. Pour une imprimante non ZPL, indiquez le <mode> THE et vous obtiendrez un PDF plein page, que vous n'aurez pas besoin d'ajuster, puisqu'il s'justera automatiquement à la taille du support de l'imprimante."
Je ne saisi pas comment l'imprimante pourrai comprendre comment imprimer correctement un PDF de 210x297mm sur un support de 101,3 x 152,4mm. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,mayo 2015 - 19:40 |
Bonjour Mickael
c'est donc juste un problème d'échelle...
Tu peux facilement 1. transformer le pdf en image avec la méthode précédente 2. faire un imprimeImage sr l'imprimante étiquette en indiquant le paramètre d'échelle souhaité
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Disponible : WXShowroom.com, WXReplication (open source) Bientôt : WXEDM (open source) Plus d'information sur http://fabriceharari.com
On 5/12/2015 7:58 AM, Mickael wrote:
@JFB : Voici le lien qui m'a permis d'importer le service web dans WinDev 19. https://www.chronopost.fr/shipping-cxf/ShippingServiceWS…@Fabrice Harari : Merci pour votre réactivité. Le fichier PDF que je récupère n'est pas en deux parties. Au format THE je n'ai pas cette partie blanche, donc pas de problème. L'étiquette prend bien la totalité de la page A4. La réponse de chronopost concernant ce même problème d'impression : "Si vous souhaitez imprimer sur une imprimante thermique compatible ZPL, vous pouvez indiquer le <mode> ZPL et vous obtiendrez l'étiquette ZPL. Pour une imprimante non ZPL, indiquez le <mode> THE et vous obtiendrez un PDF plein page, que vous n'aurez pas besoin d'ajuster, puisqu'il s'justera automatiquement à la taille du support de l'imprimante." Je ne saisi pas comment l'imprimante pourrai comprendre comment imprimer correctement un PDF de 210x297mm sur un support de 101,3 x 152,4mm. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1 mensaje |
|
| Publicado el 13,mayo 2015 - 14:24 |
Merci pour l'aide mais j'ai trouvé. Il existe deux drivers pour l'imprimante, un nommé "EasyCoder PC4 (203 dpi)" et un autre "EasyCoder PC4 (300 dpi)". Seul le 203dpi fonctionne convenablement, le 300dpi n'imprimera jamais à la taille voulu. (J'ai d'autres modèles d'imprimante thermique, j'espère ne pas être embêté. )
Et effectivement, peu importe la taille du PDF, si je lance l'impression l'imprimante se charge d'adapter le format. Il faut tout de même au préalable sélectionner le bon support dans les options d'impression de l'imprimante. (A savoir 101.6mm x 152.4mm)
La qualité de la police d'écriture reste très moyenne et le temps avant l'impression est de 5 à 8 secondes. Le logiciel de Chronopost n'a pas ces contraintes ! La qualité est parfaite, l'impression est instantané et l'installation des imprimantes thermiques, de leur drivers et de leur paramétrage est transparent.
Je pense qu'il me manque des éléments pour faire les choses correctement... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 149 mensajes |
|
| Publicado el 03,enero 2020 - 14:16 |
Bonjour,
je déterre ce sujet qui m'a bien aidé pour chronopost mais j'ai une question.
Quand j'essaye d'utiliser l'exemple avec shippingMultiParcelV3, j’obtiens l'erreur : Impossible de convertir un élément de type {http://cxf.shipping.soap.chronopost.fr/}:shipperValue en type shipperValue.
Qu'est-ce que le webservice attends comme paramètre pour shipperValue ?
cordialement. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|