-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathindex.html
326 lines (320 loc) · 16.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
<!doctype html>
<html lang="es">
<!--
Plantilla inicial de Bootstrap 4
@author parzibyte
Visita: parzibyte.me/blog
-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no">
<meta name="description" content="Imprimir ticket desde JavaScript sin
confirmación ni restricciones de navegadores">
<meta name="author" content="Parzibyte">
<title>Imprimir ticket desde JavaScript sin confirmación</title>
<!-- Cargar el CSS de Boostrap-->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<main role="main" class="container-fluid">
<div class="row">
<div class="col-12">
<h1>Imprimir ticket desde JavaScript sin pedir confirmación</h1>
<a href="./">Español</a> | <a href="./en">English</a> |<a href="//parzibyte.me/blog">By Parzibyte</a>
<div class="alert alert-success">
Al fin un plugin gratuito que imprime usando JavaScript
sin pedir confirmación ni nombre de la impresora
</div>
<div class="alert alert-danger">
<strong>Actualización</strong> ya existe la <a
href="https://parzibyte.me/blog/2021/02/09/presentando-plugin-impresoras-termicas-version-2/">versión
2</a> de este plugin con soporte para texto con acentos e imágenes.
</div>
</div>
<div class="col-12">
<h1>Modo de uso</h1>
<ol>
<li>Configura tu impresora térmica, instala sus drivers
(ya sean genéricos o no)</li>
<li>Imprime una página de impresión desde el panel de
control, es decir, comprueba que tu impresora
funciona antes de continuar</li>
<li>
Haz que tu impresora esté compartida. Mira <a
href="https://parzibyte.me/blog/2017/12/11/instalar-impresora-termica-generica/">este</a>
tutorial
</li>
<li><a href="https://github.com/parzibyte/plugin-ticket-js/releases/latest">Descarga
el plugin</a> (ejecutable) y ábrelo; <strong>se
ejecutará en segundo plano</strong>
(puedes cerrarlo desde el administrador de tareas)
</li>
<li><strong>Opcional: </strong>Ahora puedes ir a los
ejemplos, no es necesario escribir código para
probar</li>
<li>En tu proyecto, incluye el archivo <a href="Impresora.js">Impresora.js</a></li>
<li>Ahora tienes la clase Impresora. Puedes crear una
instancia de la misma</li>
</ol>
</div>
<div class="col-12">
<h1>Limitaciones</h1>
<ul>
<li>No funciona con impresoras en red. El plugin debe
estar en la computadora en donde la impresora está
presente físicamente</li>
</ul>
</div>
<div class="col-12">
<h1>Ejemplos</h1>
<ol>
<li>
<a href="./ejemplos/simple/index.html">Demostrar
capacidades del plugin</a>
</li>
<li>
<a href="./ejemplos/simple-ie11/index.html">Demostrar capacidades del plugin (Internet Explorer
11)</a>
</li>
<li>
<a href="./ejemplos/ticket/index.html">Ticket de
venta</a>
</li>
<li>
<a href="./ejemplos/imprimir-con-nombre/index.html">Imprimir indicando nombre de impresora</a>
</li>
<li>
<a href="./ejemplos/imprimir-con-nombre-ie11/index.html">Imprimir indicando nombre de impresora
(Internet Explorer 11)</a>
</li>
<li>
<a href="./ejemplos/qr/index.html">Códigos QR</a>
</li>
<li>
<a href="./ejemplos/barcode/index.html">Códigos de barras</a>
</li>
<li>
<a href="./ejemplos/establecer-impresora-silenciosa/index.html">Establecer impresora de manera
silenciosa</a>
</li>
</ol>
</div>
<div class="col-12">
<h1>API REST</h1>
<div class="alert alert-info">
<p>El plugin inicia un servidor web en el puerto 8000
<br> Recuerda que eres libre de analizar el archivo
<a href="Impresora.js">Impresora.js</a> y los
ejemplos para ver cómo se realiza esta comunicación
</p>
</div>
<h2>GET /impresoras</h2>
<p>Obtiene la lista de impresoras disponibles</p>
<h2>GET /impresora</h2>
<p>Obtiene la impresora predeterminada. Regresa una cadena
vacía si no hay impresora configurada</p>
<h2>POST /imprimir</h2>
<p>Imprime en la impresora predeterminada. Recibe un arreglo
de objetos (codificado como JSON) que deben tener la
propiedad "accion" y "datos"</p>
<h2>PUT /impresora</h2>
<p>Establece una impresora como predeterminada. Recibe una
cadena codificada como JSON, indicando el nombre de la
impresora (preferentemente obtenida de la lista). Si es
correcto, se imprime un ticket de prueba y la impresora
se convierte
en predeterminada, si no, se indica y no se imprime
ticket</p>
</div>
<div id="faq" class="col-12">
<h1>FAQ</h1>
<p>Aquí detallo algunas preguntas frecuentes y errores</p>
<h2>Sobre los dominios</h2>
<p>
Cuando obtiene la versión premium del plugin, tiene derecho a 3 dominios o subdominios.
Cada dominio o subdominio cuentan por separado, y los subdominios de un dominio no están incluidos
al registrar un dominio. También se toman por separado los puertos. Así que, por ejemplo, los
siguientes dominios cuentan como separados:
<ul>
<li>ejemplo.com</li>
<li>subdominio.ejemplo.com</li>
<li>ejemplo.com:8080</li>
</ul>
Puede igualmente registrar a localhost, solo tome en cuenta los puertos. Pues los siguientes dominios
cuentan como separados
<ul>
<li>localhost</li>
<li>localhost:7000</li>
<li>localhost:8080</li>
</ul>
Por poner otro ejemplo, los siguientes dominios cuentan como separados debido a que son distintos
puertos
<ul>
<li>ejemplo.com</li>
<li>ejemplo.com:1000</li>
<li>ejemplo.com:4000</li>
</ul>
Finalmente veamos un ejemplo de 3 dominios/subdominios distintos:
<ul>
<li>
pruebas.parzibyte.me
</li>
<li>parzibyte.me</li>
<li>parzibyte.me:8080</li>
</ul>
<br>
Si anteriormente ha agregado un dominio y desea cambiarlo, el cambio tiene un costo, pues no hay forma
de que yo elimine (de manera remota)
el plugin que le envié anteriormente.
<br>
<strong>Nota:</strong> también puede registrar un dominio con subdominios ilimitados. Cada dominio se
incluye a sí mismo y a todos los subdominios
del mismo. El costo es de 25 USD por cada dominio. Recuerde que igualmente puede registrar
<strong>Dominios o subdominios adicionales</strong> por 2.5 USD o 40 MXN
</p>
<h2>Preguntas y respuestas</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>Pregunta / problema</th>
<th>Explicación / respuesta</th>
</tr>
</thead>
<tbody>
<tr>
<td>Error en el servidor: sql: no rows in result
set</td>
<td>No se ha establecido la impresora, ya sea
porque no se ha realizado la acción o porque
no hay impresoras válidas, recuerda que si
quieres imprimir primero debes establecer la
impresora, y luego imprimir. <br>También puedes usar el método
<code>imprimirEnImpresora("nombreDeImpresoraAquí")</code>
</td>
</tr>
<tr>
<td>Quiero que el plugin se ejecute al
iniciar Windows, y que no aparezca la
consola</td>
<td>En la <a
href="https://github.com/parzibyte/plugin-ticket-js/releases/tag/v0.6-beta">versión
0.6</a> he desaparecido la consola,
basta con agregar el ejecutable al
startup folder. Más información <a
href="https://parzibyte.me/blog/2019/10/14/ejecutar-programa-inicio-windows/">aquí</a>.
</td>
</tr>
<tr>
<td>Quiero imprimir caracteres especiales
como áéí o la letra ñ</td>
<td>Por el momento no es posible imprimir
estos caracteres especiales ni con la
versión premium</td>
</tr>
<tr>
<td>Quiero remover el pie y el encabezado</td>
<td>Consigue la versión premium</td>
</tr>
<tr>
<td>Costo de la versión premium</td>
<td>500 pesos Mexicanos (aproximadamente 26 dólares). Con la versión premium se
remueve el encabezado y pie. Obtienes
licencia para 3 dominios/subdominios, cada dominio/subdominio
adicional cuesta 40 pesos mexicanos (aproximadamente 2.5 dólares)</td>
</tr>
<tr>
<td>Método de pago</td>
<td>Aquí los puedes ver: <a href="https://parzibyte.me/blog/pagos-venta-software/">Pagos
y venta de software</a></td>
</tr>
<tr>
<td>Proceso de compra</td>
<td>Realiza el pago en los medios listados anteriormente, después envíame un correo en mi
página de contacto con los 3 dominios/subdominios que usarás</td>
</tr>
<tr>
<td>¿Es un pago único?</td>
<td>Sí</td>
</tr>
<tr>
<td>El costo es muy elevado</td>
<td>Lo siento, es una forma de cobrar por el
trabajo que realizo (el reconocimiento y
las estrellas de GitHub no pagan mis
gastos). Además, también me gusta el open
source, puedes ver los <a
href="https://parzibyte.me/blog/software-creado-por-parzibyte/">proyectos
que he
creado</a> y por los que no cobro ni un
peso</td>
</tr>
<tr>
<td>¿Hay descuentos o promociones?</td>
<td>No</td>
</tr>
<tr>
<td>¿Al comprar la versión premium obtengo
soporte por algún tiempo?</td>
<td>No, solo obtienes una licencia para usar
el plugin. El máximo soporte que puedo
dar es la documentación y los ejemplos,
lo demás es responsabilidad del
desarrollador. Sin embargo, puedes <a
href="https://parzibyte.me/blog/contrataciones-ayuda/">contratarme</a>
para que lo adapte a tu sistema</td>
</tr>
<tr>
<td>¿Funciona en Linux y Mac?</td>
<td>Sí; teóricamente, solo que no lo he
probado porque no he tenido la
necesidad, pero estoy un 99.99 % seguro
de
que sí</td>
</tr>
<tr>
<td>Abrir el cajón de dinero</td>
<td>Invoca al método <code>cash</code> dentro de tu objeto que instancia de la clase
<code>Impresora</code>
</td>
</tr>
<tr>
<td>Imprimir imagen o logotipo</td>
<td>Por el momento no es posible</td>
</tr>
<tr>
<td>¿Es compatible con impresoras que no sean térmicas? por ejemplo, de tinta, láser,
etcétera</td>
<td>No. Es compatible únicamente con impresoras térmicas.
Si quieres imprimir a otras impresoras puede que quieras generar un PDF y enviarlo a
imprimir
<a
href="https://parzibyte.me/blog/2020/12/07/plugin-imprimir-pdf-manera-silenciosa-javascript/">usando
mi otro plugin</a>
</td>
</tr>
</tbody>
</table>
</div>
<div id="proceso_compra" class="col-12">
<h1>Proceso de compra</h1>
<ol>
<li>Realice el pago en <a href="https://paypal.me/LuisCabreraBenito">Paypal</a>. Puede hacerlo por
500 MXN o por 25 USD</li>
<li>Envíeme un <a href="https://parzibyte.me#contacto">correo o mensaje</a> indicando el correo
desde donde realizó el pago e indíqueme los
dominios en donde usará el plugin. Si no cuenta con la lista de los 3 dominios, no importa,
puede comenzar con uno o dos, y agregar el resto más tarde</li>
<li>Yo confirmaré el pago y le enviaré el plugin lo más pronto posible</li>
</ol>
<strong>Por favor, lea bien y responda sus dudas antes de proceder al pago, pues no hago
reembolsos</strong>
</div>
</div>
</main>
<script>
window.location.href = "https://parzibyte.me/plugin-impresora-termica-v1/";
</script>
</body>
</html>