Préface
Récemment, l'imprimante a été utilisée dans le projet. Je ne le comprenais pas au début, mais maintenant je l'ai fait, donc je l'ai résumé. Cet article comprend l'impression d'appel de fond (deux façons) et l'impression JS frontale, mais seulement IE prend en charge l'impression. De plus, si vous souhaitez connecter à distance l'imprimante, la génération de codes QR et fonctionner directement par les commandes de l'imprimante, vous devez modifier la configuration de sécurité du navigateur. Voici une introduction détaillée.
Le premier type d'impression d'arrière-plan:
Utilisez la classe PrintServiceLookup à Javax pour imprimer. Vous pouvez appeler directement l'imprimante par défaut, ou vous pouvez utiliser les méthodes suivantes pour filtrer et imprimer:
ImprimerserviceLookup.lookupMultidOCPrintServices (saveurs, attributs);
Le code exécutable est le suivant:
public static void main (String [] args) {fileInputStream textStream = null; try {textStream = new FileInputStream ("Address"); } catch (filenotFoundException e) {e.printStackTrace (); } if (textStream! = null) // Lorsque le contenu d'impression n'est pas vide {// spécifiez le format d'impression docflavor savorne = docflavor.input_stream.pdf; // service_formatted.printable // positionne le service d'impression par défaut imprimerserviceService = imprimerserviceLookUp.lookupdefaultpricedService (); // Créer un travail d'impression docPrintJob Job = imprimer.CreatePrintJob (); // Définissez l'attribut d'impression printReQueStAttributeSet PRAS = new HashprintReQueStAttributeSet (); // Définissez la taille du papier, vous pouvez également créer une nouvelle classe MediaSize pour personnaliser la taille PRAS.add (mediaSizename.iso_a4); DocAtTributesEt das = new hashdocattributeset (); // spécifie le contenu d'impression doc doc = new Simpledoc (textStream, saveur, das); // N'affichez pas la boîte de dialogue d'impression, imprimez le travail directement essayez {job.print (doc, pras); // effectuer des opérations d'impression spécifiques sur chaque page} catch (printException pe) {pe.printStackTrace (); }} else {// Si le contenu d'impression est vide, invitez l'utilisateur à imprimer annulera joptionpane.showconfirmDialog (null, "désolé, le travail d'imprimante est vide, imprimé annulé!", "vide", joptionpane.default_option, joptionpane.warning_message); }} Le deuxième type d'impression d'arrière-plan:
Remarque: Les deuxième et troisième types d'impression utilisent des commandes d'imprimante pour fonctionner. Ici, vous avez besoin du package JNA JAR, et JDK nécessite 32 bits, et la DLL correspondante doit être enregistrée. Pour différents systèmes, les DLL doivent être enregistrées sous différentes fenêtres. Après une inscription réussie, Win + R est requis, et RegSVR32.EXE TSCACTIVEX.DLL est appelé et exécuté.
Le code exécutable est le suivant:
classe publique javademo {interface publique tsclibdll étend la bibliothèque {tsclibdll instance = (tsclibdll) native.loadLibrary ("tsclib", tsclibdll.class); int about (); int OpenPort (String pianoname); int closeport (); int SendCommand (String priderCommand); INT SETUP (Largeur de chaîne, hauteur de chaîne, vitesse de chaîne, densité de chaîne, capteur de chaîne, chaîne verticale, décalage de chaîne); int downloadpcx (String FileName, String image_name); INT BARCODE (String x, String Y, Type de chaîne, hauteur de chaîne, chaîne lisible, rotation de chaîne, chaîne étroite, chaîne large, code de chaîne); int princefont (String x, string y, string fonttype, string rotation, string xmul, string ymul, string text); int ClearBuffer (); int printLabel (set de chaîne, copie de chaîne); int formFeed (); int nobackfeed (); int windowsfont (int x, int y, int fonteight, rotation int, int fontstyle, int fontunderline, string szfacename, contenu de chaîne); } public static void main (String [] args) {System.SetProperty ("jna.encoding", "gbk"); // prend en charge chinois SimpledateFormat df = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); String time = df.format (new Date ()); String qrcode = "pd102011"; Tsclibdll.instance.openport ("TSC TTP-244 Pro"); // imprimer le modèle tsclibdll.instance.setup ("70", "40", "5", "8", "0", "2", "0"); Tsclibdll.instance.clearbuffer (); String Command = "qrcode 120,90, q, 8, a, 0, m1, s7, /" "+ qrcode +" / ""; // imprime les paramètres et le contenu du code QR tsclibdll.instance.sendCommand (commande); // Commande de transfert tsclibdll.instance.sendCommand ("Text 300 70 36 0 0 0 Arial" + "Office Supplies-Label Paper"); //Tsclibdll.instance.windowsfont(300, 70, 36, 0, 0, 0, "Arial", "Paper de bureau de fournitures de bureau"); Tsclibdll.instance.printLabel ("1", "1"); Tsclibdll.instance.closeport (); }} Remarque: Cette méthode d'impression nécessite une connexion USB (TTP-244 Pro). Si vous souhaitez générer en ligne et vous connecter à distance, vous devez utiliser la troisième méthode.
Le troisième type d'impression JS
Lors de l'impression à l'aide de JS, le navigateur est principalement restreint. Actuellement, seul le navigateur IE le prend en charge. Lors de l'impression, le serveur d'automatisation ne peut pas créer d'objets sur la console. Veuillez ajuster les paramètres pertinents dans ActiveX au niveau personnalisé dans la sécurité du navigateur pour activer. Le code est le suivant:
<script type = "text / javascript"> function printqrcode () {var tscobj = new activeXObject ("tscactivex.tsclib"); // dll utilisé par l'imprimante //tsCobj.activexabout (); // Informations d'imprimante tscobj.activexopenport ("TSC TTP-244 Pro"); // Nom de l'imprimante, ne peut pas être écrit incorrectement //tscobj.activexdownloadpcx ("d: / myeclipseproject / filesmanager / trunk / doc / 02-reference / 03-qr Code Primanter / 01-developpement helat development helat development helat development helat development helat development helat development helat-development helat development hidefmentation Exemple / tscactivex.dll-php-example / "," 123.pcx "); Tscobj.activexsetup ("70", "40", "4", "15", "0", "2.5", "0"); // Paramètres d'impression // TSCOBJ.ActiveXSetUp ("Larget Larget", "Label Height", "Imprimer Speed", "Imprimer Density (0-15)", "Sensor Catégorie Sens senso) "," Espacement vertical de marque / noir (mm) "," Distance de décalage de la marque de l'espace / marque noire (mm) "); //TsCobj.activexformFeed (); //TsCobj.activexnobackfeed (); Tscobj.activexSendCommand ("Direction 1"); // Définissez la direction de la balise, direction 1 coin supérieur gauche (x, y) = {0,0}; Direction 0 Coin inférieur droit (x, y) = {0,0}; Tscobj.activexSendCommand ("Set Tear On"); Tscobj.activexclearbuffer (); //TsCobj.activexSendCommand ("putpcx 0,0, /" 123.pcx / ""); / * 1. ActiveXprinterfont utilise un codage intégré pour la machine, qui est généralement utilisé pour taper en anglais. 2. ActiveXwindowsFont peut produire des caractères chinois, mais ce doit être une police qui existe dans le système. Tscobj.activexpriterfont ("a", "b", "c", "d", "e", "f", "g"); A: String, le point de départ dans la direction x du texte, représenté par un point. B: String, le point de départ de la direction du texte, représenté par un point. C: noms de polices construites, un total de 12 types (1: 8 * 12 points 2: 12 * 20 points 3: 16 * 24 points 4: 24 * 32 points 5: 32 * 48 points TST24.BF2: Chinois traditionnel 24 * 24 TST16.BF2: traditionnel chinois 16 * 16 TTT24.Bf2: traditionnel chinois 24 * 24 (lettre) TSS24.BF2: Chine Chinois 16 * 16 K: Texte 24 * 24 L: Texte 16 * 16) D: chaîne, angle de rotation E: String, X-Direction Magnification 1-8 F: String, Y-Direction Bragnification 1-8 G: String, Imprimer Content ActiveXwindowsfont (A, B, C, D, E, F, G, H) Description: Imprimer Texte en utilisant la police TTF Windows. Paramètres: A: type entier, point de départ dans la direction x du texte, représenté par un point. B: type entier, point de départ de la direction du texte Y, représenté par un point. C: type entier, hauteur de police, représenté par des points. D: type entier, angle de rotation, rotation dans le sens antihoraire. 0 rotate 0 °, 90 rotates 90 °, 180 rotates 180 °, 270 rotates 270 °. E: type entier, apparence de police. 0: étiquette; 1: italique; 2: Bold; 3: Italique audacieuse. F: type entier, soulignement, 0: pas de soulignement; 1: souligner. G: type de chaîne, nom de police. Par exemple: Arial, Times New Roman. H: type de chaîne, contenu du texte d'impression. * /// tscobj.activexwindowsfont (500, 200, 48, 90, 0, "Arial", "/ u7f16 / u7801"); Tscobj.activexwindowsfont (260, 60, 60, 0, 2, 0, "Arial", "xx-spécifique"); // var cmd = 'qrcode Barcode Point de départ dans la direction x, point de départ du code-barres dans la direction y, niveau de correction d'erreur, hauteur du code QR, A (A et M), angle de rotation, M2 (classifié en type 1 et type 2), S1 (S1-S8, par défaut S7), / "1231 Bonjour 2421341325454353 /"' '; var cmd = 'qrcode 80,80, h, 7, a, 0, m2, s1, / "' +" 123456789 "+ '/"'; Tscobj.activexsendCommand (CMD); Tscobj.activexwindowsfont (280, 150, 40, 0, 0, "Arial", "123456789"); Tscobj.activexwindowsfont (180, 260, 30, 0, 0, 0, "Arial", "xxxxxxxxx"); Tscobj.activexprintLabel ("1", "1"); // (nombre de copies imprimées, nombre d'impressions par page) tscobj.activexClearbuffer (); // clear tscobj.activexcloseport (); // fermer le port d'impression} </cript>Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.