lundi 7 mai 2012

QL-570: utilitaires pour imprimer facilement des étiquettes

Dans mon long processus de migration de Clipper vers Harbour, je suis face à un problème en apparence épineux... en effet, il me faut imprimer des étiquettes Code Barre sur notre QL-570 en réseaux.

P-Touch Template & ESC/P
Au cours de mes recherches, je me suis aperçu que la méthode ci-dessous n'est pas compatible avec les QL-570. Il existe cependant une alternative (voir autre point plus bas)

Au cours de mes recherches, j'ai trouvé le logiciel P-Touch (visiblement de Brother) accompagné de PTouch Template et PTouch ESC/P (permettant de piloter l'imprimante avec des séquences d'échappement).

Vous trouverez plus d'informations depuis la section développement du site de brother.

Je me suis personnellement penché plus attentivement sur la vidéo suivante:


C'est de bon présage :-)

P-Touch Editor et b-pac SDK
L'option ESC/P n'est visiblement pas applicable pour une QL-570. C'est bien dommage car cela semblait pourtant parfait.
Visiblement, cela serait causé par le fait qu'une QL-570 fonctionne uniquement en mode raster (comprenez par envoi de données point-à-point/sous forme d'image). Dans ce cas, il est bien évidement difficile de commander l'imprimante avec des séquences d'échappement.

Par contre, il est possible de contourner le problème à l'aide d'une interface COM.
Brother propose P-Touch Editor, un éditeur d'étiquette qui permet de préparer ses étiquettes et de nommer les différentes zones. Une fois sauvée, cette étiquette peut devenir un modèle (template pour les initiés).

Il est possible de se procurer séparément b-pac SDK. Ce dernier est une interface COM permettant de piloter l'impression de P-Touch editor (recharger le modèle, modifier le contenu des zones nommées, lancer l'impression).

Des exemples fournis avec le SDK, j'ai tiré  NamePrn.vbs, exemple qu'il m' fallut modifié pour le faire fonctionner.
Pour cause, le répertoire mentionné par sDataFolder n'était pas correct (le (x86) pour un Windows 64 bits). et j'ai également précisé le nom de l'imprimante dans StartPrint (le nom tel que connu par Windows dans le volet Configuration|imprimante).
Sinon cela fonctionne :-)

' b-PAC 3.0 Component Sample (Instant Name Plate)
' (C)Copyright Brother Industries, Ltd. 2009
'
'<SCRIPT LANGUAGE="VBScript">
 ' Data Folder
 Const sDataFolder = "C:\Program Files (x86)\Brother bPAC3 SDK\Templates\"
 DoPrint(sDataFolder & "NamePlate1.lbx")

 '*******************************************************************
 ' Print Module
 '*******************************************************************
 Sub DoPrint(strFilePath)
  Set ObjDoc = CreateObject("bpac.Document")
  MsgBox( strFilePath )
  bRet = ObjDoc.Open(strFilePath)
  If (bRet <> False) Then
    MsgBox("OPEN :-) ")
   ObjDoc.GetObject("objCompany").Text = "Brother Industries, Ltd."
   ObjDoc.GetObject("objName").Text = "John Smith"
   ObjDoc.SetMediaByName ObjDoc.Printer.GetMediaName(), True
   ObjDoc.StartPrint "Brother QL-570", 0
   ObjDoc.PrintOut 1, 0
   ObjDoc.EndPrint
   ObjDoc.Close
  End If
  
    MsgBox("Hello world")
  Set ObjDoc = Nothing
 End Sub


Ressources utiles

Aucun commentaire: