PDF.js librería Javascript para leer PDF en Canvas

Interesante librería Javascript que nos permite mostrar en Canvas (HTML5) el contenido de un PDF. Puede venir muy bien para aplicaciones móviles, ya que en navegación en escritorio normalmente la gente tiene instalado un visor de PDFs.



  Simple pdf.js page viewer
  
  





  
/ --

PDF.js

Vía / @badass_js

Subir y exportar documentos usando Google Docs y PHP

Uno de los problemas con los que nos podemos encontrar es tener un documento en un formato y tener que exportarlo en otro formato. La exportación se puede realizar utilizando Google Docs, quizás un tanto rebuscada la solución, aunque quizás no tanto.

Os paso un script que sube el fichero a Google Docs dentro de una carpeta y acto seguido lo exporta a otro formato, en este caso subo un PPT y lo convierto en PDF (me hubiese encantado que fuera a HTML pero no acepta esa opción).

// Datos de login a la API de Google
$clientlogin_url = "https://www.google.com/accounts/ClientLogin";
$clientlogin_post = array(
    "accountType" => "GOOGLE",
    "Email" => "miemail@gmail.com",
    "Passwd" => "mipassword",
    "service" => "writely",
    "source" => "WPDOCS"
);

// Inicializamos el CURL
$curl = curl_init($clientlogin_url);

// Obtenemos el string de autenticación
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);
$auth = $matches[1];

// Cabeceras de autenticación
$headers = array(
    "Authorization: GoogleLogin auth=" . $auth,
    "GData-Version: 3.0",
);

// Recuperamos los ficheros y carpetas que tenemos en Google Docs para no crear dos veces la misma carpeta
curl_setopt($curl, CURLOPT_URL, "http://docs.google.com/feeds/default/private/full?showfolders=true");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);
$listado = curl_exec($curl);
$nombre_carpeta = 'WPDOCS';

// Si no se ha creado la carpeta, la creamos
if (strpos($listado, ''.$nombre_carpeta.'') === FALSE) {
  // Make the request
  $h = array_merge($headers,array('Content-Type: application/atom+xml'));
  $xml = ''.$nombre_carpeta.'';
  curl_setopt($curl, CURLOPT_URL, "http://docs.google.com/feeds/default/private/full");
  curl_setopt($curl, CURLOPT_HTTPHEADER, $h);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($curl, CURLOPT_POST, true);

  $response = curl_exec($curl);
  $response = simplexml_load_string($response);
  $id_folder = $response->id;
} else {
  // Recuperamos la ID de la carpeta creada anteriormente
  preg_match("#$nombre_carpetaid;

// Limpiamos los IDs de los ficheros devueltos por Google, solo nos interesa del %3A para adelante
preg_match('/%3A(.+)/', $id_doc, $m);
$id_doc = $m[1];
preg_match('/%3A(.+)/', $id_folder, $m);
$id_folder = $m[1];

// Lo movemos a la carpeta
$h = array_merge($headers,array('Content-Type: application/atom+xml'));
$data = 'https://docs.google.com/feeds/default/private/full/document%3A'.$id_doc.'';
curl_setopt($curl, CURLOPT_URL, "http://docs.google.com/feeds/default/private/full/folder%3A".$id_folder);
curl_setopt($curl, CURLOPT_HTTPHEADER, $h);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_POST, true);
$response = curl_exec($curl);

//header('Content-type: text/xml');
//echo $response;
// Parse the response

// Exportamos a HTML
curl_setopt($curl, CURLOPT_URL, "http://docs.google.com/feeds/download/presentations/Export?docID=$id_doc&exportFormat=pdf");
curl_setopt($curl, CURLOPT_HTTPHEADER, $h);
curl_setopt($curl, CURLOPT_POST, false);
header('Content-type: application/pdf');
echo curl_exec($curl);

curl_close($curl);

Vía / Google Docs API: Client Login with PHP and Curl

jsPDF: crea PDFs directamente desde Javascript

Interesante javascript que nos permite crear PDFs sin necesidad de aplicaciones en el servidor, sino usando únicamente una librería PDF. Su uso es muy sencillo, devolviendo una URL con Content-type y codificada en Base64:


var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'This is a title');

doc.setFontSize(16);
doc.text(20, 30, 'This is some normal sized text underneath.');	

// Output as Data URI
doc.output('datauri');

A mí en Firefox no me ha funcionado, pero en Chrome sí.

jsPDF

Vía / DZone

Crear PDFs con PHP y Haru

Un gran tutorial que explica cómo crear documentos PDF con Haru, una librería realizada en C que nos permite generar PDFs con texto, líneas e imagenes, añadir enlaces y anotaciones, comprimir documentos, usar TTFs, PDFs encriptados, y muchas cosas más.
El tutorial empieza mostrándonos cómo instalar Haru en nuestro PHP, y luego sigue con una serie de ejemplo sencillos hasta decirnos como añadir shapes o proteger el documento.
Dynamically Generating PDF Files with PHP and Haru

Nueva versión de TCPDF, clase PHP para crear PDFs

TCPDF es una librería PHP que permite generar PDFs, la cual usé para crear Post2PDF (plugin para WP que exporta a PDF las librerías).

Entre las novedades que nos ofrece la versión 3 nos encontramos con:

  • Mejoras en el tratamiento de imágenes, como por ejemplo el resize para optimizar el tamaño del PDF o inclusión de todos los tipos de archivos admitidos por GD.
  • Posibilidad de añadir transparencia a los elementos
  • Mejoras para el tratamiento de los colores: CMYK o colores HTML
  • Mejoras en el core y en las clases: propiedades privadas…
  • Ejemplos actualizados
  • Cambio de licencia a LGPL 2.1
  • Solución de errores

TCPDF

Post2PDF 1.2: 3 correcciones y 1 novedad

Post2PDFNueva versión Post2PDF, el plugin para WordPress que exporta a PDF los contenidos de nuestros posts. En esta ocasión corregimos tres pequeños defectos e incluimos una pequeña novedad.
Aunque los errores no eran críticos, dos de ellos si hacía que algúnos amigos de Sentido Web tuvieran problemas para poder usarlo.
El primero de los casos se daba cuando en la administración de WordPress se tenía como codificación de los caracteres de salida un formato UTF-8 (gracias Víctor). Para solucionarlo ha sido necesario incluir la función mb_convert_encoding para convertir el texto obtenido de la BD en UTF-8 y así luego poder pasárselo al plugin. Aunque TCPDF (la librería usada para crear PDFs) admite codificación distinta a UTF-8, el problema no se solucionaba mediante esta libería.
El segundo problema se daba cuando se usaba una imagen jpeg en la cabecera del documento PDF (gracias Evolutionibus). Aquí debo reconocer que no era capaz de reproducir el error que le daba a un visitante de Sentido Web, hasta que cosas de la buena suerte, di con ello.
La novedad que menciono se trata de la inclusión de multilenguaje en la pantalla de administración del plugin. Por ahora solo existe la versión en español, inglés y francés (gracias Belcha), pero me gustaría que existiera traducción para distintos idiomas (sobre todos para los existentes en la Península Ibérica: catalán, euskera, gallego, portugués, …), pero mientras que la programación no es lo mío, los idiomas tampoco ;).
Post2PDF

Post2PDF: plugin de WordPress para exportar a PDF

Post2PDF

Os presentamos el primer plugin para WordPress realizado por Sentido Web.

Qué es

Post2PDF es un plugin desarrollado por Sentido Web para WordPress el cual permite exportar una entrada (post) a formato PDF de Adobe. Post2PDF está basado en la librería de PHP TCPDF que permite crear documentos PDF, exportando contenido HTML.

Características

Su principal característica es exportar los post de WordPress (HTML) a formato PDF, pero además incluye las siguientes opciones:

  • Cofiguración de cabecera: imagen y dos líneas para la cabecera
  • Configuración del pie de página: pudiendo indicar el número de página actual sobre el total de páginas.
  • Respeta el formato HTML en gran medida: cabeceras, enlaces, imágenes, …
  • Tipos de letra y colores para la cabecera, para el cuerpo del documento y para el pie de página.
  • Posibildiad de exportar fuentes de letra gracias a la aplicación TTF2UFM.

Post2PDF solo exportará imágenes contenidas en el mismo servidor, no podrá exportar imágenes enlazadas a otros servidores.

Instalación

Se instala como cualquier otro plugin de WordPress, descomprime el archivo zip dentro del directorio /wordpress/wp-content/plugins, después entra en la administración de WordPress y en el apartado Plugins en Plugins Management tendremos que activar el plugin pulsando en Activate.

Una vez activado el plugin, veremos que dentro de las opciones de Plugins (Plugins, Plugins Editor, …) aparecerá una nueva opción llamada Post2PDF, la cual nos permitirá modificar las opciones de nuestro plugin.

Configuración

Dentro de la opción Plugins de la administración de WordPress, podemos acceder a la configuración de Post2PDF pinchando sobre el submenú con el mismo nombre.

Las opciones se dividen en 4 partes: cabecera, cuerpo, pie de página y opciones varias.

PDF Header

Configura la cabecera del documento HTML, permite incluir una imagen (localizada en el propio servidor web, tanto en url web como en path absoluto), indicar el formato del texto y el contenido de las dos líneas que forman la cabecera.

  • Title: Es la línea principal que forma la cabecera. Permite el valor __TITLE__ y __BLOGNAME__ para mostrar el título del post y el nombre del blog respectivamente.
  • Subtitle: Es la línea secundaria de la cabecera, admite también los valores __TITLE__ y __BLOGNAME__.
  • Font size: Tamaño de letra del título de la cabecera, la subcabecera tendrá un tamaño de dos terceras partes del tamaño del título.
  • Font: Nos muestra un desplegable con las fuentes disponibles.
  • Font color (R, G, B): Indica el color de la letra, en notación decimal (por ejemplo, 255 – 0 – 0 será rojo.
  • Image: Es la imágen que se mostrará en la cabecera. Solo admite los formatos JPEG y PNG y se recomienda que se encuentre disponible mediante una url en el propio servidor web.
  • Image width: Establece el ancho de la imágen.

PDF Body

Modifica las opciones del cuerpo del documento.

  • Font size: Tamaño de letra del cuerpo del documento.
  • Font: Nos muestra un desplegable con las fuentes disponibles.
  • Font color (R, G, B): Indica el color de la letra, en notación decimal (por ejemplo, 255 – 0 – 0 será rojo.

PDF Footer

Modifica las opciones del pie de página del documento.

  • Footer: Texto que aparece en el pie de página, admite los valores __PAGE_NUMBER__ y el valor __TOTAL_NUMBER_OF_PAGES__ para mostrar la página actual y el número de páginas totales.
  • Font size: Tamaño de letra del cuerpo del documento.
  • Font: Nos muestra un desplegable con las fuentes disponibles.
  • Font color (R, G, B): Indica el color de la letra, en notación decimal (por ejemplo, 255 – 0 – 0 será rojo.

Miscellaneous

Opciones varias que no tienen una categoría específica.

  • Author (PDF file): Corresponde al valor del autor que aparece en el documento PDF.
  • PDF icon: URL a la imagen que se mostrará cuando incluimos en icono de llamada al plugin Post2PDF en la plantilla de WordPress.

Cómo usarlo

Para incluir el icono para exportar la entrada a PDF tan solo hay que incluir el siguiente código en la zona de la plantilla de WordPress que queramos:

if(function_exists(“Post2PDF”)) Post2PDF();

Otras características

  • Debido a la librería TCPDF, Post2PDF tiene dos versiones distintas, una para PHP4 y la otra para PHP5, dependiendo de que versión de PDF tengas instalada en tu servidor, deberás descargarte una u otra versión de Post2PDF.
  • TCPDF incluye la utilidad ttf2ufm, la cual nos permite incluir la fuente TTF que queramos en nuestro PDF, tan solo deberemos seguir las instrucciones contenidas en el archivo README.TXT.

Post2PDF

Ejemplo de documento PDF

Realizado con la versión 2.0.3 de WordPress

TCPDF: más PDF con PHP

Ya de vuelta al “cole”, aunque no del todo, porque aun ando de vacaciones, vuelvo a lo mismo de lo que estaba contando antes de irme, cómo crear documentos PDF con PHP. Al principio empecé mediante el framework de Zend, pero debido a que implicaba ciertas dificultades, ya que no está del todo desarrollado, me pasé a la librería FPDF, la cual es mucho más completa, lo que facilita enormemente la creación de PDFs.

Ahora os cuento sobre TCPDF, una librería basada en FPDF, que hace tiene muy buena pinta, hasta que tenga un rato para ver que tal funciona, os paso las características que tiene:

  • Admite todos los formatos ISO de páginas.
  • UTF-8 y Unicode.
  • Incluye métodos para publicar algunas etiquetas xhtml: h1, h2, h3, h4, h5, h6, b, u, i, a, img, p, br, strong, em, font, blockquote, li, ul, ol, hr, td, th, tr, table, sup, sub, small.
  • Códigos de barra.
  • Admite TrueTypeUnicode, TrueType y Type1.
  • Soporta formatos personalizados de páginas, márgenes y unidades de medida.
  • Encabezados y pie de páginas.
  • Saltos de página.
  • Numeración de páginas.
  • Saltos de línea y justificación de texto.
  • Imágenes JPEG y PNG.
  • Colores.
  • Links.
  • Admite compresión de página, necesita la extensión zlib.
  • Y algo muy importante, está completamente documentado.

TCPDF

Vía / SitePoint

FPDF: librería PHP para crear PDFs

fpdf.pngDebido a la decepción que me estoy llevando con el Zend Framework, aunque aún tengo esperanzas en que vaya mejorando, he tenido que buscar otras librerías PHP para crear PDF. Una que he encontrado que me está gustando bastante (por ahora) es FPDF, una librería que exporta a PDF sin necesidad de PDFLib (la cual es de pago). Lo bueno que tiene tambien es que es gratuita, se puede usar libremente y modificar según nuestras necesidades.

Entre las funcionalidades que nos ofrece esta librería nos encontramos:

  • Elección de la unidad de medida, formato de página y márgenes
  • Gestión de cabeceras y pies de página
  • Salto de página automático
  • Salto de línea y justificación del texto automáticos
  • Admisión de imágenes (JPEG y PNG)
  • Colores
  • Enlaces
  • Admisión de fuentes TrueType, Type1 y codificación
  • Compresión de página
  • Y algo muy importante para mí, que es lo que más me ha decepcionado de las librerías de Zend, es la posibilidad de usar otro idiomas y caracteres especiales.

La instalación es sencilla, lo copias en el directorio donde guardes las librerías e incluyes la ruta en el include_path del php.ini.

FDPD