Artículos de SPIP en formato PDF (Nueva versión)

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Una versión mejorada del script que genera en formato PDF nuestros artículos.

Esta contribución se inspira ampliamente en
Génération améliorée de fichiers PDF
y en :Génération de PDF pour SPIP - Drop Zone City

Invito a que revises esas contribuciones antes que ésta.

Instalación

Encontrarás en el documento adjunto (titulado PDF Nueva Versión), los ficheros necesarios para la generación de los artículos en formato PDF.

No se debe olvidar crear una subcarpeta llamada _article_PDF en la carpeta /IMG y de asignarle los permisos a 777 (como lo habían hecho en la instalación de SPIP para el directorio IMG por ejemplo).

A continuación, instala los archivos adjuntados en la raíz de su sitio SPIP.

Atención : Si ya utilizas un archivo mes_fonctions.php3, deberás copiar el código contenido en el mes_fonctions.php3 que aquí se incluye y pegarlo entre las balizas <?php y ?> en tu archivo mes_fonctions.php3.

Luego, sólo resta incluir el vínculo en su esqueleto article.html hacia article_pdf.php3. Un ejemplo sería esto : :

<a href="article_pdf.php3?id_article=#ID_ARTICLE" title="el art&iacute;culo en formato PDF">Descargar formato PDF</a>

Demostración de generación de PDF

Funcionalidades añadidas en ésta versión

-  Los PDF se regeneran automáticamente cuando se modifica un artículo, mientras que con las contribs anteriores se debía borrar a mano los pdf en la carpeta IMG/_article_PDF cada vez que se modificaba un artículo.

-  El problema de título demasiado largo que se cortaba y en consecuencia que no correspondía a la línea se ha corregido.

-  Mejora de la generación de algunos carácteres especiales.

-  Los logos de los artículos aparecen correctamente.

-  Las imágenes insertadas en los artículos aparecen correctamente.

-  Esta contribución es compatible con la contribución : Découper un article en plusieurs pages et lui ajouter un sommaire, así los <hr> generados no aparecen en el pdf.

-  Las imágenes en formato GIF se administran de 2 maneras : Con código PHP puro, siendo el resultado no muy satisfactorio aunque utilizable ; o bien, si está disponible, con utilización de la librería GD en una versión capaz de manipular los GIF, devolviendo un resultado perfecto.

-  Se administran los archivos PNG con capa ALFA pero el PNG generado en el PDF tendrá inevitablemente un fondo blanco (aunque se podría cambiar el color por defecto desde una variable fácilmente)

-  Utilizamos la última versión de FPDF que al momento de éste artículo es la 1.53. Para más información sobre las diferencias de las versiones vea aquí.

Un PDF simplificado sin portada

Encontrarás también entre las piezas adjuntas el archivo que permitirá generar un artículo al formato PDF, de presentación más simple, sin portada.

Instalación :

Se instala como se describió anteriormente el « paquete PDF Nueva Versión ». Luego basta con sustituir el archivo lib_pdf_spip.php que se sitúa en el directorio : lib/class_pdf por el proporcionado en el documento adjunto (cuyo título del zip es « PDF simple sans page de garde »).

Obtendrás entonces un PDF simple sin portada, con un pie de página dónde se encuentra el autor, el número de páginas, la fecha de publicación y el nombre del sitio.

Podrás fácilmente modificar el tamaño, el tipo de letra y los espacios entre cada baliza (antetítulo, título, subtítulo y texto).

Ejemplo :

	//Titre
	$this->SetFont('helvetica','B',12);
	$this->WriteHTML($titre);
	$this->Ln(12);

-  SetFont permite definir el formato (B=Negrita 12=tamaño, obviamente)

-  WriteHTML sirve para transformar las balizas HTML en códigos interpretables por el PDF

-  Ln(12) = Efectúa un salto de línea, y 12 = amplitud del salto de línea.

Para más información, ves a http://www.fpdf.org

Para ir más lejos : Añadir campos extra en la generación de los PDF

Si se desea utilizar los campos extras, es necesario declararlos en el fichero : lib_pdf_spip.php como esto :

línea 137 sustituir

global $texte, $chapo, $ps, $notes ; 

por :

 global $texte, $chapo, $extra, $ps, $notes ;

alrededor de la línea 146 buscar este código :

//Texte - 
justifie $this->SetFont('helvetica','',10); 
$this->WriteHTML($texte) ; $this->Ln(12);

y añadir a continuación :

if ($extra) // extra $this->SetFont('helvetica','',10) ; $this->WriteHTML($extra) ; $this->Ln(12) ; 

En este ejemplo, los campos extra aparecerán en sus pdf bajo el texto del artículo y antes del PostScriptum.

Puedes situar el código siguiente antes del texto del artículo, antes del chapo, después del PS...

En article_pdf.html :

Línea 11, debajo de

$conf_nom_site = "[(#NOM_SITE_SPIP|pdf_first_clean)]" ;

inserta los campos extras que quieras mostrar, aquí un ejemplo con 2 campos extra (Misión, Competencia) :

$extra = "Misión : "."[(#EXTRA|Mision|pdf_first_clean)]"."
"."Competencia : "."[(#EXTRA|Competencia|pdf_first_clean)] ;

Puedes agregar de esta forma tantos campos extra como desees.

Para más información sobre los campos extra, ve a la parte privada de spip-contrib.net y haz una búsqueda sobre « extra ». Allí encontrarás toda la doc. sobre los campos extra y su utilización.

Bien, creo que no olvidé nada, sólo resta aclarar que esta contribución es sólo una recopilación de información del spip-contrib y sus foros. Pues no soy más que un ensamblador de lo que encontré y no el creador. Gracias a Chag que completó esta contrib. mejorando la gestión de las imágenes, de los cuadros e integrando la última versión de FPDF.

Integración de las imágenes en los PDF gracias a la librería GD

Comencemos por dar al César lo que es del César. Estas modificaciones se inspiran en este comentario.

Esta librería de manipulación de imágenes permite mejorar la calidad de algunas imágenes integradas en los PDF. Los formatos de archivos en cuestión son :

-  GIF : Este formato de imagen se sometía a licencia. Con el fin de no correr el riesgo de problemas judiciales y para no pagar, la librería GD no manipula ya los ficheros GIF entre su versión 1.6.0 (que corresponde a la fecha en la cual UNISYS comenzó a querer hacer pagar los usuarios) y la versión 2.0.28 (fecha a la cual su algoritmo principal pasó a dominio público). La ventaja de la librería GD es que manipula muy bien las imágenes en formato GIF.

Para saber si puedes utilizarlo ejecuta ?php phpinfo();?> desde una página php. Deberías obtener varias secciones incluidas una que se refiere a GD y que se podría asemejar a esta :

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Es necesario al menos que el soporte de lectura de GIF sea posible para poder utilizar la librería GD.

Tanto el caso de estar habilitado como no, nuestra modificación permite incluir en el fichero PDF una imagen en formato GIF ; pero será más limpia con la utilización de GD.

-  PNG : Cuando UNISYS comenzó a querer hacer pagar licencias para el formato GIF, el formato PNG emergió. La librería FPDF utilizada para crear los PDF de esta contribución ya sabe administrar los ficheros PNG, pero no los PNG con capa alfa.

Para resumir, la capa ALFA, es un método de transparencia sobre las imágenes que permite tener partes más o menos transparentes.

Nuestra modificación en la librería permite administrar los ficheros PNG con capa ALFA. El fichero se pondrá de nuevo obligatoriamente sobre un fondo blanco.

Aunque no tengan la intención de utilizar de imágenes PNG con canal alfa, sepan por ejemplo que, si añaden un documento PDF a un artículo, su icono es un PNG con canal ALFA.

Sobre la imagen siguiente, pueden comparar 2 capturas de pantalla de PDF generados a partir de SPIP. El primero no administra correctamente el canal alfa. El segundo, si.

Chag http://www.gaiaservice.fr

Paul http://www.netdeveloppeur.com

En los adjuntos se encuentran 3 archivos : si PDF Nueva Version no les funciona, prueben PDF Version Antigua


Artículo traducido por Martín Gaitán el 5 de octubre de 2005

Discussion

2 discussions

  • Hola
    En los esqueletos que hemos hecho, basados en las plantillas de Mollio, ubicados en http://alufis35.uv.es/spip/Esquelet...,
    tienen modificaciones al código mostrado en este artículo, que permite, entre otras cosas, mostrar en el idioma apropiado (actualmente Español, Inglés, Catalán y Francés) los elementos « Página », « Resumen », « Fecha de publicación », « Puesto online el », que en la versión de los esqueletos, aparece siempre en Francés.

    Saludos
    Pablo

    Répondre à ce message

  • Esoty intentando ponerlo en práctica.

    ¿sabés de alguien que haya jugado con esto ?

    Busco alguna manera de que el PDF se genere en el momento, pera no consumir espacio en disco...
    También estoy buscando la manera de justificar el texto

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom