Entradas con la etiqueta ‘Linux’

Guardar para web en Gimp 2.6 para linux

Lunes, 10 de Agosto de 2009

Ahora los usuarios de Gimp ya podemos disfrutar del Guardar para web de Adobe Photoshop, donde puedes previsualizar la imagen, los formatos, paleta, tamaño del fichero resultante… muy util vamos!

Para la instalación descargar el fichero desde aqui (http://linux.softpedia.com/progDownload/Save-for-Web-Gimp-Plugin-Download-40567.html) e instalarlo, lo más fácil es bajarse el .deb correspondiente y doble click :D

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.

Instalación de PHP-GTK2 en Linux Ubuntu 8.04

Miércoles, 23 de Julio de 2008

Seguimos el tutorial oficial de instalación que se encuentra en esta página.

Aunque Ubuntu lleva el php5 instalado, vamos a hacer un update de versión para asegurar de que todo se hace bien:

cvs -d :pserver:cvsread@cvs.php.net:/repository login
cvs -d :pserver:cvsread@cvs.php.net:/repository co -r PHP_5_2 php-src

Si no teneis el CVS instalado: sudo apt-get install cvs

Ahora que ya esta actualizada/comprobada la version de php, procedemos a compilar su instalación, para ello es necesario seguir los siguientes pasos, (atención a posibles fallos, comento dos más abajo):

cd php-src
./buildconf
./configure --prefix=/opt/php5_2 --disable-cgi
make
su
make install
echo extension=php_gtk2.so >> /opt/php5_2/lib/php.ini
/opt/php5_2/bin/php-config --extension-dir | xargs echo 'extension_dir=' >> /opt/php5_2/lib/php.ini

A mi me ha dado dos errores el paso de ‘./configure…’, éstos han sido:

1. configure: error: Found invalid flex version: 2.5.34. Supported flex versions are: 2.5.4

En Ubuntu 8.04 viene instalada la versión de flex 2.5.34 y la soportada es la flex 2.5.4, que ubuntu la tiene en sus repositorios como flex-old. Si vuestro caso es el mismo teneis que ir al gestor de paquetes synaptic, buscar ‘flex’ y de la lista que sale buscar el paquete flex instalado, marcar para eliminar completamente y un poco más abajo marcar ‘flex-old’.

2. configure: error: xml2-config not found. Please check your libxml2 installation.

Si ocurre esto, hay que ir de nuevo al gestor de paquetes synaptic, buscar ‘libxml2′ y en la lista que nos mostrará, marcar para instalar la fila que pone ‘libxml2-dev’.

El tercer paso, make, es el que se encarga de compilar. Si en este paso os dice ‘failed to open stream’ es porque el paso anterior se ha hecho mal, vuelve a lanzarlo y comprueba que la ultima linea no ponga algo de error. Si este paso se ejecuta con todo correcto tarda un poco en completarse y saca mucho texto por pantalla ya que compila todas las librerias que no són pocas.

Según la guía oficial de php-gtk2 hay que hacer un su, y posteriormente un make install, así pues esto sirve para acabar de instalar los paquetes con derechos de root(su), por tanto:

sudo su (os pedira contraseña)

make install

Si hasta aquí todo ha ido bien, los dos últimos pasos no darán problemas, asi que soo hay que hacer copiar y pegar de esos pasos:

echo extension=php_gtk2.so >> /opt/php5_2/lib/php.ini
/opt/php5_2/bin/php-config --extension-dir | xargs echo 'extension_dir=' >> /opt/php5_2/lib/php.ini

Ahora toca compilar todo el tema del PHP-GTK2:

cd ..
cvs -d :pserver:cvsread@cvs.php.net:/repository co php-gtk
cd php-gtk
./buildconf --with-phpize=/opt/php5_2/bin/phpize
./configure --with-php-config=/opt/php5_2/bin/php-config --with-libglade
make
make install

Y aquí, en el paso del ‘./configure…’ he vuelto a tener problemas con las versiones de mis instalaciones:

1. configure: error: PHP-GTK 2.x requires GLib 2.6.0 or higher

Se queja de que no tiene la libreria Glib adecuada, es necesario instalar ‘libglib2.0-dev’ para solventar este problema, así que ya sabeis, a buscarlo en el gestor de paquetes synaptic.

2. configure: error: PHP-GTK 2.x requires GTK+ 2.6.0 or higher

Más o menos lo mismo que el anterior, error de versión, en esta ocasión toca buscar en el gestor de paquetes synaptic ‘libgtk2.0-dev’.

Una vez solventados estos dos problemas, que recuerdo, pueden ser distintos o no tener errores directamente en tu caso, ya que puede ser que tengas los modulos previamente instalados correctamente, sólo hay que hacer un par de instrucciones mas que no darán problemas:

make

sudo make install

El ultimo paso es hacer un enlace a la instalacion del nuevo PHP que hemos hecho:

ln -s /opt/php5_2/bin/php /usr/bin/php-gtk