Cita:
Iniciado por fharid Buenos dias , mi duda es sobre algo que estoy desarrollando
imprimo un archivo .txt en un ticketera con formato generic text only
por lo tanto no hay problema de hecho funciona bien en .txt
el caso es que me funciona sin problemas en internet explorer
<head>
<link rel="alternate" media="print" href="archivo.txt"/>
<script>
function printArc(){
javascript:window.print()
}
</script>
<title>IMPRESION DE TICKET</title>
</head>
<body>
<input type="button" value="I M P R I M I R" onclick="printArc()" style='width:150px; height:100px'/>
he estado informandomen y solo funciona en IE , pero quisiera que me compartan otra opcion para jalar este archivo que se encuentra en el servidor y cuando le de click a algo me arroje seleccionar la impresora e imprima ese archivo y no la pagina que despliega
Saludos
Si, lamentablemente no es muy compatible.
Podrías hacer algo asi
Código HTML:
Ver original<!DOCTYPE html>
/*<![CDATA[*/
/* esto afecta a la vista del navegador en pantalla */
@media screen {
.contenido_pantalla{
width: 300px;
margin: 100px auto;
text-align: center;
}
.contenido_impresion{
display: none;
}
}
/* esto a la vista impresion, oculta los elementos menos el area que contiene el ticket */
@media print{
.espere{
display: none;
}
.contenido_impresion{
display: block;
}
}
/*]]>*/
<div class='contenido_pantalla'>contenido visible en pantalla
</div> <div class='contenido_impresion'><pre>Ticket 001
Claro que en ese caos deberías ver de incluir el código del ticket en el html
Esto otro, requiere de php, es un poco más complejo pero mucho más manejable
imprime_ticket.html
Código HTML:
Ver original<!DOCTYPE html>
/*<![CDATA[*/
.botones{
width: 150px; padding: 50px; background: buttonface; display: block;text-decoration: none; text-align: center;border: outset 1px buttonface;
}
.botones:hover{
border: inset 1px buttonface;
}
/*]]>*/
<script type="text/javascript"> //<![CDATA[
var nvcarga= null;
function ventana_imprime(pagina,w,h,nombre){
var winleft = (screen.width-w)/2;
var wintop = (screen.height-h)/2;
caracteristicas='height='+h+',width='+w+',top='+wintop+',left='+winleft+',titlebar=no,scrollbars=yes,location=0,toolbar=0,resizable=yes'
nvcarga=window.open(pagina,nombre,caracteristicas);
if(parseInt(navigator.appVersion) >= 4){nvcarga.window.focus();}
}
//]]>
<a href="imprime.php?archivo=ticket_001" class="botones" onclick="ventana_imprime('imprime.php?archivo=ticket_001',400,400,'vimp'); return false;">IMPRIMIR ticket 001
</a><br /> <a href="imprime.php?archivo=ticket_002" class="botones" onclick="ventana_imprime('imprime.php?archivo=ticket_002',400,400,'vimp'); return false;">IMPRIMIR ticket 002
</a> <iframe src="about:blank" name="area_impresion" id="area_impresion" style='width:0px; height:0px; border: none; display: none;'></iframe>
Como ves cada botón abre una nueva ventana y entre los parámetros se pasa el nombre del ticket, luego imprime.php
Código PHP:
Ver original<?php $archivo = $_GET['archivo']; ?>
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<title>Imprimiendo <?php echo $archivo ; ?></title>
<style type="text/css">
/*<![CDATA[*/
@media screen {
.espere{
width: 300px;
margin: 100px auto;
text-align: center;
}
.contenido_impresion{
display: none;
}
}
@media print{
.espere{
display: none;
}
.contenido_impresion{
display: block;
}
}
/*]]>*/
</style>
<script type="text/javascript">
//<![CDATA[
window.onload= function imprime(){
window.print();
setTimeout('window.close()', 1200);
}
//]]>
</script>
</head>
<body>
<?php
echo "<div class='espere'>Imprimiendo <b>$archivo</b></div>";
echo "<div class='contenido_impresion'><pre>" . file_get_contents($archivo . '.txt') . "</pre></div>"; ?>
</body>
</html>
En el css usamos la primer técnica, incluimos el contenido del ticket agregando la extensión .txt, y onload hacés el window.print y autocerrás la ventana. Testeado en Chrome, FF, IE, Safari, y en opera imprime correctamente pero no cierra la ventana.
Como ves con este ultimo sistema podés imprimir diferentes archivos desde difeentes botones en el imprimir_ticket.html
Aclaración, la extensión printer de php está solo disponible para windows, y en todo caso trabaja con impresoras vinculadas al server no al cliente
SAludos