Kata pengantar
Baru -baru ini, printer digunakan dalam proyek. Awalnya saya tidak memahaminya, tetapi sekarang saya telah melakukannya, jadi saya telah merangkumnya. Artikel ini mencakup pencetakan panggilan latar belakang (dua cara) dan pencetakan JS front-end, tetapi hanya IE sekarang mendukung pencetakan. Selain itu, jika Anda ingin menghubungkan printer dari jarak jauh, pembuatan kode QR dan secara langsung beroperasi dengan perintah printer, Anda perlu memodifikasi konfigurasi keamanan browser. Berikut adalah pengantar yang terperinci.
Jenis pertama pencetakan latar belakang:
Gunakan kelas PrintServiceLookup di Javax untuk dicetak. Anda dapat secara langsung memanggil printer default, atau Anda dapat menggunakan metode berikut untuk memfilter dan mencetak:
Printservicelookup.lookupmultidocprintservices (rasa, atribut);
Kode yang dapat dieksekusi adalah sebagai berikut:
public static void main (string [] args) {fileInputStream TextStream = null; coba {textStream = new fileInputStream ("alamat"); } catch (FileNotFoundException e) {e.printstacktrace (); } if (textStream != null) // When the print content is not empty { // Specify the printout format DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE // Position the default printing service PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); // Buat pekerjaan cetak docprintjob job = printservice.createPrintJob (); // atur cetak atribut printrequestattributeTet pras = new HashPrintRequestAttributeTet (); // Atur ukuran kertas, Anda juga dapat membuat kelas mediasize baru untuk menyesuaikan ukuran pras.add (mediasizename.iso_a4); Docattributeset das = hashdocattributeTet baru (); // Tentukan cetak konten doc = new SimpleDoc (TextStream, Flavour, DAS); // Jangan menampilkan kotak dialog cetak, cetak kerja langsung coba {job.print (doc, pras); // Lakukan operasi pencetakan khusus pada setiap halaman} catch (printException pe) {pe.printstacktrace (); }} else {// Jika konten cetak kosong, permintaan pengguna untuk mencetak akan membatalkan joptionpane.showconfirmDialog (null, "Maaf, pekerjaan printer kosong, cetak dibatalkan!", "Kosong", joptionpane.default_option, joptionpane.warning_message); }} Jenis pencetakan latar belakang kedua:
Catatan: Jenis pencetakan kedua dan ketiga menggunakan perintah printer untuk beroperasi. Di sini Anda memerlukan paket JAR JNA, dan JDK membutuhkan 32-bit, dan DLL yang sesuai perlu didaftarkan. Untuk sistem yang berbeda, DLL harus terdaftar di bawah jendela yang berbeda. Setelah pendaftaran yang berhasil, Win+R diperlukan, dan perintah REGSVR32.EXE TSCACTIVEX.dll dipanggil dan dijalankan.
Kode yang dapat dieksekusi adalah sebagai berikut:
kelas publik javademo {antarmuka publik tsclibdll memperluas pustaka {tsclibdll instance = (tsclibdll) native.loadlibrary ("tsclib", tsclibdll.class); int tentang (); int openport (string pianoname); int closeport (); int sendCommand (String PrinterCommand); int setup (lebar string, tinggi string, kecepatan string, densitas string, sensor string, string vertikal, string offset); int downloadpcx (string fileName, string image_name); int barcode (string x, string y, string type, string tinggi, string dapat dibaca, rotasi string, string sempit, string lebar, kode string); int printerfont (string x, string y, string fontType, rotasi string, string xmul, string ymul, string text); int clearbuffer (); int printlabel (string set, string copy); int formfeed (); int nobackfeed (); int windowsfont (int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, string szfacename, content string); } public static void main (string [] args) {System.setProperty ("jna.encoding", "gbk"); // Mendukung China 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"); // Model cetak tsclibdll.instance.setup ("70", "40", "5", "8", "0", "2", "0"); Tsclibdll.instance.clearbuffer (); Perintah String = "QRCode 120,90, Q, 8, A, 0, M1, S7,/" " + Qrcode +"/""; // cetak parameter dan isi kode QR tsclibdll.instance.sendCommand (perintah); // Perintah Transfer tsclibdll.instance.sendCommand ("Teks 300 70 36 0 0 0 Arial"+ "Kertas Label Persediaan Kantor"); //Tsclibdll.instance.windowsfont(300, 70, 36, 0, 0, 0, "Arial", "Kertas Label Persediaan Kantor"); Tsclibdll.instance.printlabel ("1", "1"); Tsclibdll.instance.closeport (); }} Catatan: Metode pencetakan ini membutuhkan koneksi USB (TTP-244 Pro). Jika Anda ingin menghasilkan online dan menghubungkan dari jarak jauh, Anda perlu menggunakan metode ketiga.
Jenis pencetakan JS ketiga
Saat mencetak menggunakan JS, browser terutama dibatasi. Saat ini, hanya IE Browser yang mendukungnya. Saat mencetak, server otomatisasi tidak dapat membuat objek di konsol. Harap sesuaikan pengaturan yang relevan di ActiveX di level khusus di keamanan browser untuk mengaktifkan. Kodenya adalah sebagai berikut:
<script type = "text/javascript"> function printqrcode () {var tscoBj = new ActiveXObject ("tscactivex.tsclib"); // dll yang digunakan oleh printer //tscobj.activexabout (); // informasi printer tscobj.activexopenport ("TSC TTP-244 Pro"); // Nama printer, tidak dapat ditulis secara tidak benar //tscobj.activexdownloadpcx ("D:/myeclipseProject/file-file/trunk/doc/02-Reference/03-QR Printer/03- QR Printer/0 Contoh/tscactivex.dll-php-example/"," 123.pcx "); TSCObj.ActiveXsetup("70","40","4","15","0","2.5","0");//Print Settings//TSCObj.ActiveXsetup("Label Width","Label Height","Print Speed","Print Density (0-15)","Sensor Category String Type, 0 means using a vertical distance sensor, 1 means using a black sensor (black mark) Senso) "," Gap/Black Mark Vertical Spacing (mm) "," Gap/Black Mark Offset Distance (mm) "); //Tscobj.activexFormFeed (); //Tscobj.activexnoBackFeed (); Tscobj.activexsendCommand ("arah 1"); // atur arah tag, arah 1 sudut kiri atas (x, y) = {0,0}; Arah 0 sudut kanan bawah (x, y) = {0,0}; Tscobj.activexsendCommand ("Set Tear On"); Tscobj.activexclearbuffer (); //Tscobj.activexsendCommand ("putpcx 0,0,/" 123.pcx/""); /* 1. ActiveXPrinterFont menggunakan pengkodean bawaan untuk mesin, yang biasanya digunakan untuk mengetik dalam bahasa Inggris. 2. ActiveXWindowsFont dapat menghasilkan karakter Cina, tetapi harus menjadi font yang ada dalam sistem. Tscobj.activexprinterfont ("a", "b", "c", "d", "e", "f", "g"); A: String, titik awal dalam arah x teks, diwakili oleh suatu titik. B: String, titik awal dari arah Text Y, diwakili oleh titik. c: Built font names, a total of 12 types (1: 8*12 dots 2: 12*20 dots 3: 16*24 dots 4: 24*32 dots 5: 32*48 dots TST24.BF2: Traditional Chinese 24*24 TST16.BF2: Traditional Chinese 16*16 TTT24.BF2: Traditional Chinese 24*24 (Letter) TSS24.BF2: Chinese 24*24 TSS16.BF2: China 16*16 K: Teks 24*24 L: Teks 16*16) D: String, Sudut Rotasi E: String, X-Direction Anpespot 1-8 F: String, Y-Direction Anps 1-8 G: String, Cetak Konten ActivexWindowsFont (A, B, C, D, E, F, G, H) Deskripsi: Cetak teks menggunakan windows ttf font. Parameter: A: Jenis integer, titik awal dalam arah x teks, diwakili oleh suatu titik. B: Jenis integer, titik awal dari arah Text Y, diwakili oleh suatu titik. C: Jenis integer, tinggi font, diwakili oleh titik -titik. D: Jenis integer, sudut rotasi, rotasi berlawanan arah jarum jam. 0-rotate 0 °, 90-rotate 90 °, 180-rotate 180 °, 270-rotate 270 °. E: Jenis integer, penampilan font. 0: Label; 1: miring; 2: tebal; 3: Bold Italic. F: Jenis integer, garis bawah, 0: tidak ada garis bawah; 1: Garis bawah. G: Jenis string, nama font. Misalnya: Arial, Times New Roman. H: Jenis String, Cetak Konten Teks. */// tscobj.activexWindowsfont (500, 200, 48, 90, 0, "Arial", "/u7f16/u7801"); Tscobj.activexWindowsfont (260, 60, 60, 0, 2, 0, "Arial", "xx-specific"); // var cmd = 'Qrcode Barcode Start Point dalam arah x, titik awal barcode dalam arah y, tingkat koreksi kesalahan, tinggi kode qR, a (a dan m), sudut rotasi, m2 (diklasifikasikan ke dalam tipe 1 dan tipe 2), S1 (S1-S8, default S7),/"1231 Hello 2421341325444, S733."; 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"); // (jumlah salinan cetak, jumlah cetakan per halaman) tscobj.activexclearbuffer (); // hapus tscobj.activexcloseport (); // tutup port cetak} </script>Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.