Archivos mensuales: mayo 2012

Problemas en la previsualización de documentos PDF en Alfresco

Primer problema:

En ocasiones los ficheros PDF no pueden ser visualizados por el Share de Alfresco. Esto puede ser debido a que si el PDF tiene activas las restricciones de impresión y/o copia, la librería SWFTools y en concreto la utilidad pdf2swf no es capaz de transformar el fichero.

Para estar seguros de que es este el problema, podemos llamar directamente a la utilidad con el fichero PDF y comprobar el resultado:

pdf2swf prueba.pdf -o prueba.swf

Si el mensaje que devuelve es «FATAL   PDF disallows copying» entonces estamos ante este problema.

La forma de solucionarlo es recompilar SWFTools y de esta forma evitamos el aviso y podremos ver los documentos.

Las siguientes instrucciones son para la compilación bajo Linux:

Bajamos el paquete de código fuente de las SWFTools (p.e. la versión 0.9.2 está probada en la versión 3.4.8 de Alfresco funcionando perfectamente), lo descomprimimos y entramos en el directorio creado.

En lib/pdf/pdf.cc comentamos las dos líneas siguientes:

if(!pi->config_print && pi->nocopy) {msg(» PDF disallows copying»);exit(0);}
if(pi->config_print && pi->noprint) {msg(» PDF disallows printing»);exit(0);}}

Configuramos de forma estática para que podamos llevarlo a otras distribuciones de Linux (yo la he probado en Ubuntu 11.10):

CC=/usr/bin/gcc-4.6 CXX=/usr/bin/g++-4.6 LDFLAGS=»-static» ./configure

Seguramente tengamos que instalar los paquetes para desarrollo como es el g++ y el gcc.

Luego:

make

Y por último:

make install 

O bien, simplemente sustituimos la utilidad pdf2swf que es la que se utiliza. Ya podremos ver los PDF bloqueados normalmente.

Segundo problema:

Otro problema que encontramos es que en la versión 3.4.x y 4.x los PDF se ven borrosos en la previsualización, esto es debido a los modificadores establecidos para realizar la conversión a SWF que pone Alfresco.

Para solucionarla tendremos que modificar el fichero webapps/alfresco/WEB-INF/classes/alfresco/subsystems/thirdparty/default/swf-transform.properties que generalmente tiene la siguiente línea:

swf.encoder.params=-s zoom=72 -s ppmsubpixels=1 -s poly2bitmap=1 -s bitmapfonts=1

Por esta otra (por ejemplo):

swf.encoder.params=-s zoom=100 -s ppmsubpixels=1 -s poly2bitmap=1 -s bitmapfonts=1

De esta forma se verán correctamente, eso si, el tiempo de conversión será mayor.

ACTUALIZACIÓN (12/07/2012): Aunque para compilar SWFTools se puede usar la información de los enlaces que doy al final, para Ubuntu 11 (y probado en la 12) tanto para amd64 como i386 se pueden seguir la siguiente secuencia de comandos de forma rápida:

sudo apt-get install build-essential checkinstall
sudo chown $USER /usr/local/src
sudo chmod u+rwx /usr/local/src
sudo apt-get install libgif-dev xpdf libfreetype6 libfreetype6-dev libjpeg62 libjpeg8 libjpeg8-dev
sudo wget http://www.swftools.org/swftools-0.9.1.tar.gz
cd lib/pdf
sudo wget http://gd.tuwien.ac.at/publishing/xpdf/xpdf-3.02.tar.gz
./configure
make


sudo checkinstall

Fuentes:
http://monkiki.wordpress.com/2010/04/19/compilar-pdf2swf-con-soporte-para-pdf-protegidos/
http://loftux.com/2012/01/08/replace-alfresco-standard-flash-viewer-with-pdf-js/
http://www.vservu.com/_blog/MegaZine3_-_tips,_tricks_and_hints/post/pdf2swf-switches/
http://www.swftools.org/
https://designbye.wordpress.com/2010/02/23/installing-swftools-and-pdf2swf-on-ubuntu-linux/
http://ubuntuforums.org/showthread.php?t=1821521