Posts Tagged “pdf”

If I had to choose a framework/language for Desktop multiplaform apps, sure it would be again Qt. It was funny to see a C++ GNU/Linux program whose source code compiles as is when carried to a Win environment (at least XP and Win7).

But after telling this, I’d like to share here three small bugs I’ve suffered, and their respective [kind of] solutions.

1) HTML to PDF rendering. Suppose you have something like:

QTextDocument *d;
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
QPainter painter(&printer);
...
d->drawContents(&painter, currentRect);

So what? The problem is that drawContents function doesn’t render, for example, the different sizes specified in HTML.

Solution: draw directly with drawText and drawImage. Anyway, my case was that I needed to export to HTML and PDF, so it was easier to reuse the contents of QTextDocument type.

2) Qt Linguist without UTF-8 support for source strings

Here the problem is that if you make a release from linguist-qt4 (at least in version 4.7.4) and the source strings are in UTF-8, the released file is not correct. So, the question is that if you want to use Qt Linguist, you are forced to leave the source strings in english. But what if you know in advance that you’ll never need to have them in english, and just, for example, in spanish, basque and catalan? In Akademy-es 2012, one guy working with internationalization in Lliurex told me that they’ve been told from Qt that Qt Linguist manages only 7-bit strings.

Anyway, it’s not a big problem cause you can use Qt Linguist to make the translations: the problem is just in the Release option.

Solution: don’t use Qt Linguist for release, and instead of that, use lrelease console command.

3) Qt and mingw in Windows

This bug is more for mingw than Qt. As I explained in feb 2012, problem is that you cannot use a .qrc that contains files whose size sume more than [about] 64 Kb.

Solution: you’ll have to load dynamically the needed files. This implies not to have a one, only and compact executable file, but e.g. image files separated from it.

Conclusion: if you can take advantage of this small learning, great. In between, be looking forward to the new Qt5.

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot

Comments No Hay Comentarios »

Recientemente me he encontrado haciendo alguna presentación en Impress que tenía que pasar a PDF, el estándar ISO del formato creado por Adobe.

Indico aquí algunos consejillos que me han servido, por si a alguien le pueden venir bien.

Formato PDF/A: este estándar de iure tiene la ventaja de que “incrusta” dentro del PDF las fuentes, etc. de modo que se puede visualizar igual en cualquier equipo. Es un formato muy aceptado a nivel de mercado (ej. para cuando hacemos un cartel y lo enviamos a la imprenta). Para exportar en este formato hay que seleccionar la opción correspondiente a través de “Exportar en formato PDF”. No obstante, la versión más extendida, PDF/A-1 no admite transparencias (según wikipedia la siguiente sí), y al exportar se avisa en estos casos:

  • Cuando se incrusta una imagen bitmap con transparencia (ej. PNG). Se convierte a objeto sin transparencia.
  • Cuando se crea un objeto vectorial con transparencia sobre otro. Al pasar a PDF los objetos se convierten a bitmaps.

Gradientes de colores: objetos con gradientes no suelen dar buen resultado al pasar a PDF .

Presentaciones con muchas imágenes bitmap: en algunas presentaciones en las que hay muchas hojas que contienen muchas imágenes bitmap, el PDF exportado puede tener tamaño muy grande. Un truco para reducir el tamaño, aunque se pierde algo de calidad en pantallas grandes, es generar una imagen por cada página de la presentación, y después juntar todas ellas en un PDF. Los pasos para esto son:

  1. Exportar como documento HTML. Se elige el formato de imagen, la calidad y el tamaño (ej. 800×600), y aparte de aparecer ficheros de la forma text*hml y img*html (que se pueden borrar), aparecerá un fichero de imagen por cada página.
  2. Ejecutar este script en bash (requiere imagemagick y pdftk):
  3. #!/bin/bash
    E=png #jpg
    for i in $(seq 0 9); do mv img$i.$E img0$i.$E; done
    for i in $(ls img*$E); do convert $i $i.pdf; done ; pdftk img*pdf cat output fichero.pdf

    Notas: supone que al menos hay 10 páginas (de 0 a 9), y no borra todos los ficheros intermedios.

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot

Comments No Hay Comentarios »

Una de las aplicaciones estrella de KDE es Okular, el visor oficial de ficheros PDF en KDE, el cual soporta además otros 13 formatos (CHM, DjVu, Postscript, ePub, etc.), es capaz de leer de viva voz el contenido, y corre no sólo en GNU/Linux sino también en Windows y Mac OS X.

Hay quien estará acostumbrado al Acrobat Reader y considerará trivial el valor añadido de un software así. Pero para quienes valorapdfreaders.orgmos la libertad del código, dada la generalización de uso del PDF a nivel universal, Okular es un programa cuya importancia para el software libre, y concretamente para el escritorio KDE, resulta crítica. Aprovecho para resaltar, como usuario del día a día de esta aplicación, su buen acabado.

En la Akademy-es 2010 que comienza mañana en Bilbao, contaremos con la presencia de su principal responsable, el catalán Albert Astals, que además es el presidente de la asociación KDE España.

1. Veo en el “Acerca de” del Okular que aparece tu nombre nada menos que de 2004 a 2009. ¿Qué te llevó a este desarrollo? ¿sigues siendo el principal responsable?

Okular es el heredero en KDE 4 de KPDF y yo ya era uno de los desarrolladores de KPDF, con lo cual seguir implicado en Okular era el paso natural. En cuanto a mi implicación en KPDF, surgió de forma bastante curiosa, alguien dijo que sería interesante actualizar el código de KPDF para que usara las partes internas de XPDF 3.0 en vez de las de XPDF 2.x y mi respuesta fue intentar hacer el cambio y lo conseguí, y desde ahí ando jugando con los PDF. Sobre seguir siendo el principal responsable, durante bastante tiempo no lo fui, pero el que había sido responsable necesitaba un tiempo alejado del proyecto o sea que actualmente sigo siendo el responsable, aunque siempre estoy dispuesto a que haya gente que quiera ocupar mi sitio :-).

Ahora entiendo tu conocimiento para hacerme aquel comentario explicativo.
2. Desde luego, lo del Okular ya es una contribución de peso, pero ¿hay más que hayas programado para KDE u otros entornos libres?

Demasiados :D. Actualmente también soy el responsable de poppler, KGeography, Blinken, así como el coordinador general de las traducciones de KDE; anteriormente estuve involucrado con Kiriki, KTuberling, y en general me dedico a corregir errores varios en cualquier sitio de KDE que necesite un poco de ayuda (ahora mismo estoy trabajando un poco en el kioslave de audiocd).

3. A nivel estatal, ¿dónde crees que puede estar “la cantera” de desarrolladores que liberen código? ¿en empresas, en la universidad, en comunidades hackers,…?

Sinceramente no se que decirte. Yo creo que las tres comunidades que mencionas son liberadores pontenciales de código, aunque históricamente las universidades y empresas simplemente liberan el código y basta, mientras que otro tipo de comunidades suelen crear un entorno alrededor del código liberado que lo hace algo más interesante.

4. El previo del Akademy-es 2010 entra en la recta final y ya estamos apuntadas 80 personas. Como presidente de la asociación ¿qué esperas de este evento?

La verdad es que desde la asociación estamos muy interesados con su celebración, ya que nunca habíamos realizado un evento de KDE en Euskadi. Lo que esperamos del evento es un mejor conocimiento de KDE por parte de la universidad y empresas, una difusión de los valores de KDE a los asistentes, promocionando así KDE en Bilbao y el resto de Euskadi y por supuesto como todos los eventos en los que se reunen las personas, cohesionar la comunidad de KDE: poner una cara detrás de un nombre o nick ayuda mucho en posteriores interacciones 🙂

———————

Dada tu fructífera y generosa hiper-aKtividad, seguro que será interesante oírte en persona dentro de nada en Bilbao.

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot

Comments 3 Comentarios »

Me han preguntado cómo convertir una presentación a video, y aunque lo que aquí documentaré no es exactamente la respuesta a eso, he recordado que el bueno de txipi publicó un post relacionado con presentaciones de slideshare (de aquí el “[Más]”), y he decidido intentar mejorarlo para llegar a un bash script que a partir de una URL de slideshare genere un pdf o un video.

El método que planteaba txipi se basaba en usar un script para capturar pantallazos. Pues bien, con esta base, he usado el paquete swftools que incluye el comando swfrender para convertir un swf a imagen.

Por otra parte, su propuesta también empleaba dos extensiones para firefox (GreaseMonkey y Download them All). Estudiando el código html de una página de slideshare, y comparando con el resultado de las URLs que aparecen en la ventana popup que ofrece el Download them All, he deducido alguna sintaxis de cómo encontrar los nombres de las distintas páginas generadas en s3.amazonaws.com.

Por tanto, el script que he escrito valdrá mientras slideshare mantenga esa sintaxis (lo he probado en 3 presentaciones y ha funcionado). Si no, a adaptarlo de nuevo.

Como bonus al script de txipi, incluyo una línea para convertir las imágenes a fichero de video mediante mencoder.

#!/bin/bash

echo "+++ Mila esker, txipi"

URL="http://www.slideshare.net/danitxu/software-libre-para-una-ciudadana-libre"
F=fichero.tmp
wget "$URL" -O "$F"

L=$(grep "meta href" $F | sed -e 's/\(.*\)http:\/\/\(.*\)\/\(.*\)thumbnail?\(.*\)/\3/')
N=$(grep '"totalSlides":' $F | sed -e 's/\(.*\)"totalSlides":\(.*\),"player\(.*\)/\2/'|cut -f 1 -d ,)
echo $L $N

for i in $(seq 1 $N); do

F="$L"slide-"$i".swf
j=$(printf "%03d" $i)
wget http://s3.amazonaws.com/slideshare/$F -O slide"$j".swf
swfrender slide"$j".swf -o slide"$j".png
rm slide"$j".swf

done

#convert slide*png slides.pdf
#0.3 segundos en cada slide
mencoder mf://*.png -mf fps=0.3:type=png -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o salida.avi -ffourcc DX50

En esto consiste la magia del software libre: uno hizo un programa y publicó el código fuente y permitió mejorarlo, otro tuvo una necesidad de usar un programa que hiciera cosas parecidas pero distintas y habló con alguien, ese alguien vio el código original y buscó hasta encontrar la modificación, y otros usaron la versión mejorada. A ver si alguien se anima a montar un servicio web en plan slideshare2all.net a partir de lo de arriba.

Long life to Free Software

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot

Comments 1 Comentario »

Tengo que rellenar un contrato en PDF consistente en una única hoja, y quería hacerlo con OpenOffice. Después de instalar la extensión de Sun para importar PDFs el resultado no ha sido demasiado bueno: caracteres movidos, etc. Entonces he optado por desinstalarla e instalar el paquete openoffice.org-pdfimport de Ubuntu, y todo ok: ha importado el texto a la perfección, y ha faltado una imagen de la cabecera que fácilmente he copiado (desde el capturador de pantalla) y pegado.

Claro que no será tan potente o no valdrá para tantos tipos de ficheros PDF como las herramientas nativas y privativas de Acrobat, pero es operativo para un uso común.

La exportación a (o generación de) PDFs es ya conocida en GNU/Linux: algunos programas la integran de forma nativa (ej. OpenOffice), y para el resto siempre que permitan imprimir está la posibilidad de configurar una impresora virtual que genere PostScript y de aquí pasar a PDF, o si pueden exportar a imágenes éstas son fácilmente convertibles a PDF.

Por otra parte, cuando tengo un PDF y quiero añadir páginas, ej. un curriculum al que adjuntas una hoja del certificado de un curso, desde el explorador de archivos dolphin (KDE) es muy sencillo si se instala el paquete del servicemenu-pdf. Esto permite seleccionar un fichero PDF, y dándole al botón derecho del ratón hacer distintas acciones como son:

  • Convertirlo a html, postscript, imágenes, texto, o extraer imágenes
  • Extraer o añadir páginas, juntar varios documentos pdf, rotar páginas
  • Watermarking
  • Repaginar en formatos 2×1, 2×2,…

Aunque hay herramientas de consola que pueden ser más útiles ej. en el caso de que tener que hacer operaciones sobre muchos archivos, las indicadas me parecen opciones muy cómodas de usar en el día a día, y desde luego son dos funcionalidades no tan disponibles en alternativas privativas para el usuario medio, pudiendo perfectamente ser “argumentos de venta” en la promoción del software libre. Bien estará incluirlas en cursillos de formación para quienes se incorporan.

Por si alguien quiere indagar más, hay un buen listado (aunque no completo 100%) en wikipedia.

Como no todo es maravilloso, acabo con una de cal y otra de arena y dejo aquí un fichero PDF curioso que me encontré en julio de 2009: no se visualiza correctamente con herramientas libres (okular, evince) -al menos en sus versiones a día de hoy-, y sí con Acrobat Reader. Mirad la diferencia:

Supongo que será porque las imágenes incrustadas tienen un formato no estándar que se rasteriza correctamente sólo con la librería privativa que contiene el Acrobat Reader. Eso sí, ha sido el único caso que me he encontrado así en años, y de hecho lo guardo en mi colección de bichos raros.

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot

Comments 2 Comentarios »