Prefácio
Recentemente, a impressora foi usada no projeto. Eu não entendi no começo, mas agora o fiz, então resumi. Este artigo inclui a impressão de chamadas em segundo plano (duas maneiras) e a impressão JS front-end, mas apenas o IE agora suporta a impressão. Além disso, se você deseja se conectar remotamente à impressora, a geração de códigos QR e opera diretamente pelos comandos da impressora, é necessário modificar a configuração de segurança do navegador. Aqui está uma introdução detalhada.
O primeiro tipo de impressão de fundo:
Use a classe PrintServiceLookup em Javax para imprimir. Você pode chamar diretamente a impressora padrão ou usar os seguintes métodos para filtrar e imprimir:
PrintServiceLookup.LookupMultidocprintServices (Flavores, Atributos);
O código executável é o seguinte:
public static void main (string [] args) {fileInputStream textstream = null; tente {textstream = new FileInputStream ("endereço"); } catch (filenotfoundException e) {e.printStackTrace (); } if (textstream! = null) // Quando o conteúdo de impressão não estiver vazio {// especifique o formato de impressão docflavor Flavor = docflavor.input_stream.pdf; // Service_formatted.printable // Posicione o serviço de impressão defaultPrintService // Crie um trabalho de impressão docPrintJob Job = PrintService.CreatePrintJob (); // Defina o atributo de impressão PrintReCeStTributeSt pras = novo hashPriTReCeStAttributeSet (); // Defina o tamanho do papel, você também pode criar uma nova classe MediaSize para personalizar o tamanho prras.add (mediaSizename.iso_a4); Docattributeset Das = new hashdocattributeset (); // Especifique o conteúdo de impressão doc. // não exibe a caixa de diálogo Imprimir, imprimir o trabalho diretamente, tente {job.print (doc, pras); // Execute operações de impressão específicas para cada página} catch (printException pe) {pe.printStackTrace (); }} else {// Se o conteúdo de impressão estiver vazio, solicite que o usuário imprimir será cancelado JoptionPane.showConfirmdialog (null, "Desculpe, o trabalho da impressora está vazio, imprimido cancelado!", "vazio", JoptionPane.Default_Option, JoptionPane.warning_message); }} O segundo tipo de impressão de fundo:
NOTA: O segundo e o terceiro tipos de impressão usam comandos de impressora para operar. Aqui você precisa do pacote JNA JAR, e o JDK requer 32 bits, e a DLL correspondente precisa ser registrada. Para sistemas diferentes, as DLLs devem ser registradas sob diferentes janelas. Após o registro bem -sucedido, é necessário Win+R e o comando regsvr32.exe tscactivex.dll é chamado e executado.
O código executável é o seguinte:
classe pública Javademo {interface pública tSclibdll estende a biblioteca {tSclibdll instância = (tsclibdll) nativo.loadlibrary ("tsclib", tsclibdll.class); int sobre (); int openport (string pianoname); int closeport (); int sendCommand (string PrinterCommand); Int Configuração (largura da sequência, altura da sequência, velocidade da string, densidade da string, sensor de sequência, string vertical, deslocamento da string); int downloadpcx (string filename, string image_name); Int Barcode (string x, string y, tipo string, altura da string, string legível, rotação de string, string estreita, string larga, código da string); Int PrinterFont (String X, String y, String FontType, String Rotação, String xmul, String ymul, String text); int clearbuffer (); int printlabel (string set, string cópia); int formfeed (); int nobackfeed (); int windowsfont (int x, int y, int fontheight, int rotação, int fontstyle, int fontunderline, string szfacename, conteúdo de string); } public static void main (string [] args) {System.setProperty ("jna.encoding", "gbk"); // suporta chinês simpledEformat df = new SimpleDateFormat ("yyyyy-mm-dd hh: mm: ss"); String time = df.format (new Date ()); String qrcode = "pd102011"; Tsclibdll.instance.openport ("tsc ttp-244 pro"); // imprima modelo 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 +"/""; // imprima os parâmetros e o conteúdo do código QR tsclibdll.instance.sendCommand (comando); // Comando de transferência tsclibdll.instance.sendCommand ("Texto 300 70 36 0 0 0 ARIAL"+ "Office Supplies-Belt-Bek Paper"); //Tsclibdll.instance.windowsfont(300, 70, 36, 0, 0, 0, "Arial", "Office Supplies-Belt-Bek Paper"); Tsclibdll.instance.printlabel ("1", "1"); Tsclibdll.instance.closeport (); }} Nota: Este método de impressão requer uma conexão USB (TTP-244 Pro). Se você deseja gerar on -line e conectar -se remotamente, precisa usar o terceiro método.
O terceiro tipo de impressão JS
Ao imprimir usando JS, o navegador é restrito principalmente. Atualmente, apenas o navegador do IE suporta. Ao imprimir, o servidor de automação não pode criar objetos no console. Ajuste as configurações relevantes no ActiveX no nível personalizado na segurança do navegador para ativar. O código é o seguinte:
<script type = "text/javascript"> function printqrcode () {var tScobj = new ActiveXObject ("tscactivex.tsclib"); // dll usado pela impressora //tscobj.activeXabout (); // Informações da impressora TSCOBJ.ActiveXopenport ("TSC TTP-244 Pro"); // Nome da impressora, não pode ser escrito incorretamente //tscobj.activexdownloadpcx ("d:/myeclipseproject/filesManager/trunk/doc/02-references/03-QR Code Exemplo/tscactivex.dll-php-expler/"," 123.pcx "); TSCOBJ.ActiveXSetup ("70", "40", "4", "15", "0", "2.5", "0"); // Imprima configurações // tScobj.ActiveXsetup ("Largura da etiqueta" USTENHOTEM RABELATE, "altura do rótulo," Speed Print Speed "," Print density (0-15) "," Sensor "Tipo de categoria" senso) "," lacuna/mark preto espaçamento vertical (mm) "," distância do deslocamento de marcas de lacuna/preto (mm) "); //Tscobj.activeXformFeed (); //Tscobj.activexnobackfeed (); TSCOBJ.ActiveXSendCommand ("Direction 1"); // Defina a direção da tag, direção 1 canto superior esquerdo (x, y) = {0,0}; Direção 0 canto inferior direito (x, y) = {0,0}; Tscobj.activexsendCommand ("Set On"); Tscobj.activeXClearBuffer (); //Tscobj.activexsendCommand ("putpcx 0,0,/" 123.pcx/""); /* 1. ActiveXPrinterFont usa a codificação interna para a máquina, que geralmente é usada para digitar em inglês. 2. ActiveXWindowsFont pode gerar caracteres chineses, mas deve ser uma fonte que existe no sistema. TScobj.ActiveXPrinterFont ("A", "B", "C", "D", "E", "F", "G"); A: String, o ponto de partida na direção x do texto, representada por um ponto. B: String, o ponto de partida da direção do texto y, representado por um ponto. 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: Chinês 16*16 K: Texto 24*24 L: Texto 16*16) D: String, ângulo de rotação E: String, amplificação da direção x 1-8 F: String, ampliação da direção y 1-8 g: String, Imprima Conteúdo ActiveXWindowsFont (A, B, C, E, E, F, G, H) Descrição: Texto usando Windows TTF. Parâmetros: A: Tipo inteiro, o ponto de partida na direção x do texto, representada por um ponto. B: Tipo inteiro, o ponto de partida da direção do texto y, representado por um ponto. C: Tipo inteiro, altura da fonte, representada por pontos. D: Tipo inteiro, ângulo de rotação, rotação no sentido anti -horário. 0-ROTATE 0 °, 90-ROTATE 90 °, 180-ROTATE 180 °, 270-ROTATE 270 °. E: tipo inteiro, aparência de fonte. 0: etiqueta; 1: itálico; 2: negrito; 3: Itálico ousado. F: Tipo inteiro, sublinhado, 0: sem sublinhado; 1: sublinhado. G: Tipo de string, nome da fonte. Por exemplo: Arial, Times New Roman. H: Tipo de string, conteúdo de texto de impressão. */// TSCOBJ.ActiveXWindowsfont (500, 200, 48, 90, 0, "Arial", "/u7f16/u7801"); TSCOBJ.ActiveXWindowsfont (260, 60, 60, 0, 2, 0, "Arial", "XX específico"); //var cmd = 'QRCODE barcode start point in X direction, barcode start point in Y direction, error correction level, QR code height, A(A and M), rotation angle, M2 (classified into type 1 and type 2), S1 (s1-s8, default s7), /"1231 Hello 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"); // (número de cópias impressas, número de impressões por página) tscobj.activexclearbuffer (); // limpo tscobj.activeXClosePort (); // fechar a porta de impressão} </script>Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.