Entradas con la etiqueta ‘ubuntu’

Ubuntu Server no instala: please insert the disc labeled ‘Ubuntu-Server 8.10 …’

Lunes, 30 de Marzo de 2009

Después de intentar instalar varias veces Ubuntu server 8.10 me he encontrado con el mismo error:

Please insert the disck labeled: ‘Ubuntu-Server 8.10 _Intrepid Ibex_ - Release amd64 (20081028.1)’ in the drive ‘/cdrom/’ and press enter.

Parece que a media instalación deja de leer el cd. Bien, tras bajarme dos veces  Ubuntu Server 8.10 Amd64 y una de i386 con idéntico resultado, he llegado a la conclusión que no era culpa del disco. Como podemos leer aquí el problema viene del modelo de DVD-RW. Si tienes un Sony NEC Optiarc AD-7173A no podrás instalar Ubuntu Server. Curiosamente la versión Desktop si la instala correctamente.

Hay varias soluciones, hacer una instalación mínima e instalar el resto posteriormente por red, instalar la 8.04 y hacer upgrade o (la más simple siempre y cuando tengas otro lector a mano) cambiar la unidad de CD/DVD desde donde instalas.

Imprimir por impresora desde PHP-GTK

Jueves, 24 de Julio de 2008

En esta ocasión vamos a ver como imprimir algo desde un programa en PHP-GTK con nuestra impresora, usaremos además el terminal de Linux.

En nuestro caso necesitamos imprimir datos para generar ‘tickets’, con lo que la copia debe tener algo de estilo. Esto nos traerá algún problema, puesto que no es imprimir sólo texto. Además, es previsible que estos tickets sean consultados vía web remotamente.

Para empezar hay que comentar que en Linux no tiene la libreria printer_php.dll, con lo que hay que imprimir desde terminal, al hacerlo nos damos cuenta que la solución es multiplataforma, así que en Windows debería funcionar bien lo que vamos a explicar.
Para desarrollar la idea hemos creado un programa con el Glade 2, que tiene una caja de texto(textview) y un botón, al botón le asignamos un evento al ser clickado, que llamara a la función ‘Conecta’ y le advertimos que coja como fuente de datos el textView.

Ahora generamos el blade y vamos al archivo PHP.
Vamos a hacer un ejemplo simple ya que para generar los pdf podeis visitar su web oficial.

function conecta($textView){
$textBuffer = new GtkTextBuffer();
$salida = shell_exec(’ls -l /home’); //en caso de windows shell_exec(’dir c:’);, por ejemplo
$textBuffer->set_text($salida);
$textView->set_buffer($textBuffer);

}

Con este pequeño ejemplo, al pulsar el boton el terminal ejecutara un listado de directorios del sistema, y colocara la salida en la caja de texto.

Como véis, el comando a utilizar en php es shell_exec, que envia al modo consola del servidor (tu maquina si estas en local, que es nuestro caso), una orden y la devuelve a la variable $salida.

Para imprimir en modo consola tanto en linux como en Windows con la impresora el comando es ‘lpr NOMBRE_ARCHIVO’, con eso le envias el archivo especificado a la cola de impresión de la impresora.

function conecta($textView){

$salida=shell_exec(’ls -l /home’);
$textBuffer = new GtkTextBuffer();
$pdf=new FPDF(’P',’cm’);
//aquí iria toda la generación del PDF con FPDF, poniendo el contenido de $salida como texto de     pagina
$pdf->Output(’prueba.pdf’); //genera el archivo prueba.pdf
$textBuffer->set_text($salida);
$textView->set_buffer($textBuffer);
shell_exec(’pdf2ps Calefaccio.pdf prova.ps’); //convertir de PDF a PS
shell_exec(’lpr prova.ps’);

}

¿Qué hace exactamente este nuevo código?

Primero de todo coje como $salida la respuesta al listado de directorio, genera un PDF con el texto que deseemos, puede ser por ejemplo la $salida que por eso la hemos hecho en este caso, al generar el PDF crea el archivo en el mismo directorio.

shell_exec(’pdf2ps Calefaccio.pdf prova.ps’); //convertir de PDF a PS
shell_exec(’lpr prova.ps’);

Esta es la parte interesante del asunto, si provais de imprimir directamente el archivo PDF desde el modo consola tendreis problemas y vereis como salen impresas unas cosas muy raras, ya que la consola de windows o el terminal de linux no sabe imprimir PDF, lo que hay que hacer es convertir de PDF a PS el archivo, en este caso en modo consola de linux con la funcion pdf2ps, y darle a imprimir ese mismo archivo PS.

Haciendo pruebas ha procesado la creación y conversión de 72 paginas en unos 2 segundos aproximadamente, osea que realmente no va mal ;-)

En windows previamente habria que crear un puerto tcp/ip para la impresora, ya que la funcion ‘lpr’ es imprimir remotamente, ‘lp’ es impresión normal.

Aunque tambien puede usarse printer en php si se funciona sobre Windows y quiere imprimir.