<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sentido Web &#187; post2pdf</title>
	<atom:link href="http://sentidoweb.com/tag/post2pdf/feed" rel="self" type="application/rss+xml" />
	<link>http://sentidoweb.com</link>
	<description>Desarrollo web, HTML, CSS, Javascript, PHP, MySQL</description>
	<lastBuildDate>Mon, 16 Jan 2012 10:16:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Post2PDF 1.4: error XSS corregido</title>
		<link>http://sentidoweb.com/2007/02/22/post2pdf-1-4-error-xss-corregido.php</link>
		<comments>http://sentidoweb.com/2007/02/22/post2pdf-1-4-error-xss-corregido.php#comments</comments>
		<pubDate>Thu, 22 Feb 2007 23:30:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf wordpress pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2007/02/22/post2pdf-1-4-error-xss-corregido.php</guid>
		<description><![CDATA[Nueva versión de Post2PDF, plugin de WordPress para exportar los plugins a formato PDF. Esta versión corre a cargo de Alexander Concha, quien detectó un error de XSS en el plugin (¡ya me vale!) y además de solucionarlo, le ha dado un buen repaso a todo el plugin mejorándolo en muchos aspectos, por lo cual [...]]]></description>
			<content:encoded><![CDATA[<img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" class="right" height="127" width="112">Nueva versión de <strong>Post2PDF</strong>, plugin de WordPress para exportar los plugins a formato PDF.
Esta versión corre a cargo de <a href="http://www.buayacorp.com/">Alexander Concha</a>, quien detectó un error de XSS en el plugin (¡ya me vale!) y además de solucionarlo, le ha dado un buen repaso a todo el plugin mejorándolo en muchos aspectos, por lo cual le estoy muy agradecido, ya que a parte de solucionar un error importante, he podido aprender bastante de su experiencia en WordPress.
Como novedad importante, hay que decir que el plugin <strong>solo es compatible con WordPress 2.x</strong>, las pruebas realizadas con versiones anteriores no han sido satisfactorias.
<a href="http://sentidoweb.com/temas/desarrollo-web/laboratorio/plugins-wp/index.php#post2pdf">Post2PDF</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2007/02/22/post2pdf-1-4-error-xss-corregido.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post2PDF 1.3: compatibilidad con WordPress 2.0</title>
		<link>http://sentidoweb.com/2007/01/29/post2pdf-1-3-compatibilidad-con-wordpress-2-0.php</link>
		<comments>http://sentidoweb.com/2007/01/29/post2pdf-1-3-compatibilidad-con-wordpress-2-0.php#comments</comments>
		<pubDate>Mon, 29 Jan 2007 17:59:54 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf wordpress plugin]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2007/01/29/post2pdf-1-3-compatibilidad-con-wordpress-2-0.php</guid>
		<description><![CDATA[Nueva versión de Post2PDF, plugin de WordPress para exportar los plugins a formato PDF. En esta ocasión no era compatible con WordPress 2.x ya que las librerías han sido modificadas y fallaba a la hora de acceder a una de ellas que ya no existe. Aquellos que quieran usarlo en su WordPress 2.x deben bajarse [...]]]></description>
			<content:encoded><![CDATA[<img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" class="right" height="127" width="112" />Nueva versión de <strong>Post2PDF</strong>, plugin de WordPress para exportar los plugins a formato PDF.
En esta ocasión no era compatible con WordPress 2.x ya que las librerías han sido modificadas y fallaba a la hora de acceder a una de ellas que ya no existe.
Aquellos que quieran usarlo en su WordPress 2.x deben bajarse la última versión, mientras que aquellos que no hayan actualizado su versión de WordPress no es necesario que lo actualicen.
<a href="http://sentidoweb.com/temas/desarrollo-web/laboratorio/plugins-wp/index.php#post2pdf">Post2PDF</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2007/01/29/post2pdf-1-3-compatibilidad-con-wordpress-2-0.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post2PDF 1.2: 3 correcciones y 1 novedad</title>
		<link>http://sentidoweb.com/2006/12/19/post2pdf-1-2-3-correcciones-y-1-novedad.php</link>
		<comments>http://sentidoweb.com/2006/12/19/post2pdf-1-2-3-correcciones-y-1-novedad.php#comments</comments>
		<pubDate>Tue, 19 Dec 2006 22:46:18 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf wordpress export pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/12/19/post2pdf-1-2-3-correcciones-y-1-novedad.php</guid>
		<description><![CDATA[Nueva 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 [...]]]></description>
			<content:encoded><![CDATA[<img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" class="right" height="127" width="112"/>Nueva versión <strong>Post2PDF</strong>, 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 <strong>Sentido Web</strong> 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 <a href="http://sentidoweb.com/2006/11/08/post2pdf-11-correccian-de-dos-pequeaos-errores.php#comentario_4003">Víctor</a>). Para solucionarlo ha sido necesario incluir la función <em>mb_convert_encoding</em> para convertir el texto obtenido de la BD en UTF-8 y así luego poder pasárselo al plugin. Aunque <em>TCPDF</em> (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 <a href="http://blog.evolutionibus.info">Evolutionibus</a>). Aquí debo reconocer que no era capaz de reproducir el error que le daba a un visitante de <strong>Sentido Web</strong>, 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 <a href="http://labuenaletra.blogspot.com/">Belcha</a>), 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, &#8230;), pero mientras que la programación no es lo mío, los idiomas tampoco <img src='http://sentidoweb.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .
<a href="http://sentidoweb.com/temas/desarrollo-web/laboratorio/plugins-wp/index.php#post2pdf">Post2PDF</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/12/19/post2pdf-1-2-3-correcciones-y-1-novedad.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post2PDF 1.1: corrección de dos pequeños errores</title>
		<link>http://sentidoweb.com/2006/11/08/post2pdf-1-1-correccion-de-dos-pequenos-errores.php</link>
		<comments>http://sentidoweb.com/2006/11/08/post2pdf-1-1-correccion-de-dos-pequenos-errores.php#comments</comments>
		<pubDate>Wed, 08 Nov 2006 16:16:15 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf 1.1]]></category>
		<category><![CDATA[post2pdf wordpress plugin]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/11/08/post2pdf-1-1-correccion-de-dos-pequenos-errores.php</guid>
		<description><![CDATA[Nos hubiera gustado tardar tan poco como la gente de Mozilla, pero problemas con la conexión y demás, no hemos podido subirlo antes. Hemos creado una nueva versión de Post2PDF en la que se solucionan un par de errores: Error: problemas en la selección del título cuando el prefijo de la BD de WordPress no [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" class="right" height="127" width="112"/>Nos hubiera gustado tardar tan poco como la gente de Mozilla, pero problemas con la conexión y demás, no hemos podido subirlo antes.</p>
<p>Hemos creado una nueva versión de <strong>Post2PDF</strong> en la que se solucionan un par de errores:</p>
<ul><li>Error: problemas en la selección del título cuando el prefijo de la BD de WordPress no es el que viene por defecto.</li>
<li>Error: se mostraba incorrectamente el icono de PDF en ciertos casos.</li></ul>
<p>Hubiera estado bien haber podido añadir algúna novedad que tenemos pensada, pero era necesario subir la corrección del error.</p>
<p>Gracias <a href="http://francisco.hernandezmarcos.net">Francisco</a> por encontrar uno de los errores y avisarnos.</p>
<p><a href="http://sentidoweb.com/temas/desarrollo-web/laboratorio/plugins-wp/index.php#post2pdf">Post2PDF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/11/08/post2pdf-1-1-correccion-de-dos-pequenos-errores.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laboratorio: cómo hacer un plugin para WordPress</title>
		<link>http://sentidoweb.com/2006/10/30/laboratorio-como-hacer-un-plugin-para-wordpress.php</link>
		<comments>http://sentidoweb.com/2006/10/30/laboratorio-como-hacer-un-plugin-para-wordpress.php#comments</comments>
		<pubDate>Mon, 30 Oct 2006 20:00:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf plugin wordpress]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/10/30/laboratorio-como-hacer-un-plugin-para-wordpress.php</guid>
		<description><![CDATA[Algo que nos gusta hacer en Sentido Web es explicar cómo se hacen las cosas, no solo mostrar scripts que encontramos o que inventamos, para así que quienes estén interesados, puedan aprender cómo hacerlo ellos mismos. El otro día sacamos a la luz el plugin para WordPress Post2PDF y hoy vamos a explicar que es [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" class="right" height="127" width="112"/>Algo que nos gusta hacer en <strong>Sentido Web</strong> es explicar cómo se hacen las cosas, no solo mostrar scripts que encontramos o que inventamos, para así que quienes estén interesados, puedan aprender cómo hacerlo ellos mismos.</p>
<p>El otro día sacamos a la luz el plugin para WordPress <a href="http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php">Post2PDF</a> y hoy vamos a explicar que es lo que hicimos para desarrollarlo.</p>
<p><strong>El plugin consta de dos archivos principales</strong> (a parte de los de la librería), el plugin en sí y un script que es llamado por el plugin que es el que se encarga de la exportación a formato PDF.</p>

<span id="more-604"></span>
<p>Como bien dice en la entrada, este plugin está basado en la librería <a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf">TCPDF</a>, la cual permite crear documentos PDF pudiendo exportar HTML a este formato. Para usar esta librería nos <strong>crearemos una clase que extenderá de la clase <em>TCPDF</em></strong>, aunque podríamos solamente instanciarla, al extenderla, podremos sobreescribir el método <em>footer</em>, el cual escribe el pie de página de las páginas del documento HTML.</p>
<p>La creación de nuestra clase es la siguiente:</p>
<pre><code>define("_PDF_CREATOR_", "SW_Post2PDF");
define("__TITLE__", $wpdb-&gt;get_var('SELECT post_title FROM wp_posts WHERE id='.$_GET['id']));
define("__BLOGNAME__", get_option("blogname"));
define("__TOTAL_NUMBER_OF_PAGES__", "{nb}");
/* Clase que recibe un post y lo transforma a PDF
usando las clases de TCPDF (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) */
class SW_Post2PDF extends TCPDF{
private $_DOC_TITLE = "Blog post";
private $_DOC_SUBJECT = "";
private $_DOC_KEYWORDS = "";
private $_html = "";
// Constructor
function __construct() {
parent::__construct(PDF_PAGE_ORIENTATION, "pt", PDF_PAGE_FORMAT, true);
// Información del documento
parent::SetCreator(_PDF_CREATOR_);
parent::SetAuthor(_PDF_AUTHOR_);
parent::SetTitle($_DOC_TITLE);
parent::SetSubject($_DOC_SUBJECT);
parent::SetKeywords($_DOC_KEYWORDS);
// Márgenes del documento
parent::SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
// Salto de página automático
parent::SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// Imágenes escaladas
parent::setImageScale(PDF_IMAGE_SCALE_RATIO);
// Idioma
$l = Array();
$l['a_meta_charset'] = "UTF-8";
$l['a_meta_dir'] = "ltr";
$l['a_meta_language'] = "en";
$l['w_page'] = "page";
parent::setLanguageArray($l);
// Toma las fuentes que se han especificado en la configuración del pluggin
parent::SetFont(get_option("sw_pdf_body_font"), "", get_option("sw_pdf_header_title_font_size"));
parent::setHeaderFont(Array(get_option("sw_pdf_header_title_font"), '', get_option("sw_pdf_header_title_font_size")));
parent::setBodyFont(Array(get_option("sw_pdf_body_font"), '', get_option("sw_pdf_body_font_size")));
parent::setFooterFont(Array(get_option("sw_pdf_footer_font"), '', get_option("sw_pdf_footer_font_size")));
parent::SetFooterMargin(PDF_MARGIN_FOOTER);
parent::AliasNbPages();
}
// Inicializa la cabecera de la página
public function setHeader() {
parent::SetHeaderMargin(PDF_MARGIN_HEADER);
parent::SetHeaderData(get_option("sw_pdf_header_image"),
get_option("sw_pdf_header_image_width"),
preg_replace('/(__\w+__)/e', '($1)',
get_option("sw_pdf_title")),
preg_replace('/(__\w+__)/e', '($1)',
get_option("sw_pdf_subtitle")));
}
// Añade el contenido que se va a exportar
public function setText($_txt) {
$this-&gt;_html .= $_txt;
}
// Inicializa el pie de página
public function Footer() {
parent::SetY(-15);
parent::SetFont(get_option("sw_pdf_footer_font"),'I',get_option("sw_pdf_footer_font_size"));
parent::SetTextColor(get_option("sw_pdf_footer_title_font_color_R"),
get_option("sw_pdf_footer_title_font_color_G"),
get_option("sw_pdf_footer_title_font_color_B"));
$footer = str_replace("__PAGE_NUMBER__", parent::PageNo(), preg_replace('/(__\w+__)/e', '($1)', get_option("sw_pdf_footer")));
parent::Cell(0,10, $footer,0,0,'C');
}
}</code></pre>
<p>Y para finalizar el script que exporta la entrada, tendremos que recuperar la entrada, crearnos un objeto de la entrada anterior y devolver el resultado de exportar a PDF el contenido de la entrada.</p>
<pre><code>// Instanciamos nuestra clase
$pdf = new SW_Post2PDF();
// Formato de fecha
$post = get_post($_GET['id'], 'ARRAY_A');
// 2006-09-25 | 14:45:32 H
$fecha = mysql2date('Y-m-d | H:i:s', $post["post_date"])." H";
// Incluimos el título del post, la fecha y el contenido
$texto = '&lt;h1&gt;'.$post["post_title"].'&lt;/h1&gt;&lt;sup&gt;'.$fecha.'&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;'.wpautop($post["post_content"]);
$pdf-&gt;setHeader();
$pdf-&gt;AddPage();
$pdf-&gt;SetFont(get_option("sw_pdf_body_font"), '', get_option("sw_pdf_body_font_size"));
$pdf-&gt;SetFont("vera", "I", 10);
$pdf-&gt;SetTextColor(get_option("sw_pdf_body_title_font_color_R"),
get_option("sw_pdf_body_title_font_color_G"),
get_option("sw_pdf_body_title_font_color_B"));
$pdf-&gt;writeHTML($texto, true, 0);
$pdf-&gt;Output();</code></pre>
<p>Lo siguiente es ver cómo hemos realizado el plugin para WordPress, para ello dividiremos la explicación en tres partes: función que se debe incluir en la plantilla, administración del plugin y creación de un submenú en las opciones de la administración de plugins en WP.</p>
<p>Post2PDF está pensado para que se incluya un icono en la plantilla del <em>theme</em>, que al ser pinchado llame al script que hemos explicado anteriormente para realizar la exportación. Para ello existe la función <em>Post2PDF()</em>, que se encarga de escribir el enlace en la plantilla.</p>
<pre><code>function Post2PDF() {
global $id;
echo '&lt;a href="'.get_option('siteurl').'/wp-content/plugins/Post2PDF/SW_Post2PDF.php?id='.$id.'" target="_blank"&gt;';
echo '&lt;img src="'.get_option('sw_pdf_icon').'" alt="Post2PDF"&gt;';
echo '&lt;/a&gt;';
}</code></pre>
<p>Lo siguiente es crearnos la pantalla de administración del plugin, la cual se llamará así misma para actualizar los datos. Lo primero que hará es comprobar si se viene debido a haber pulsado el botón de actualizar (usando un campo oculto dentro del formulario como flag) y en ese caso actualizaremos los datos. Y mostraremos el HTML necesario para la página de administración del plugin, entre las cosas más destacadas resaltamos la detección de las fuentes instaladas.</p>
<pre><code>// Muestra la pantalla de administracion del plugin y actualiza los datos modificados
function sw_write_plugin_submenu() {
// Si se actualizan los valores del plugin, se actualizan en las opciones de WP
if (isset($_POST["sw_form"])) {
update_option("sw_pdf_title", stripslashes(isset($_POST["sw_pdf_title"])? $_POST["sw_pdf_title"]: get_option('blogname')));
update_option("sw_pdf_subtitle", stripslashes(isset($_POST["sw_pdf_subtitle"])? $_POST["sw_pdf_subtitle"]: "[#the_title()#]"));
update_option("sw_pdf_author", stripslashes(isset($_POST["sw_pdf_author"])? $_POST["sw_pdf_author"]: __SW_PDF_TITLE_DEFAULT__));
update_option("sw_pdf_header_image", stripslashes(isset($_POST["sw_pdf_header_image"])? $_POST["sw_pdf_header_image"]: ""));
update_option("sw_pdf_header_image_width", stripslashes(isset($_POST["sw_pdf_header_image_width"])? $_POST["sw_pdf_header_image_width"]: ""));
update_option("sw_pdf_header_title_font", stripslashes(isset($_POST["sw_pdf_header_title_font"])? $_POST["sw_pdf_header_title_font"]: "freesans"));
update_option("sw_pdf_header_title_font_size", stripslashes(isset($_POST["sw_pdf_header_title_font_size"])? $_POST["sw_pdf_header_title_font_size"]: "12"));
update_option("sw_pdf_header_title_font_color_R", stripslashes(isset($_POST["sw_pdf_header_title_font_color_R"])? $_POST["sw_pdf_header_title_font_color_R"]: "0"));
update_option("sw_pdf_header_title_font_color_G", stripslashes(isset($_POST["sw_pdf_header_title_font_color_G"])? $_POST["sw_pdf_header_title_font_color_G"]: "0"));
update_option("sw_pdf_header_title_font_color_B", stripslashes(isset($_POST["sw_pdf_header_title_font_color_B"])? $_POST["sw_pdf_header_title_font_color_B"]: "0"));
update_option("sw_pdf_body_font_size", stripslashes(isset($_POST["sw_pdf_body_font_size"])? $_POST["sw_pdf_body_font_size"]: "12"));
update_option("sw_pdf_body_font", stripslashes(isset($_POST["sw_pdf_body_font"])? $_POST["sw_pdf_body_font"]: "freesans"));
update_option("sw_pdf_body_title_font_color_R", stripslashes(isset($_POST["sw_pdf_body_title_font_color_R"])? $_POST["sw_pdf_body_title_font_color_R"]: "0"));
update_option("sw_pdf_body_title_font_color_G", stripslashes(isset($_POST["sw_pdf_body_title_font_color_G"])? $_POST["sw_pdf_body_title_font_color_G"]: "0"));
update_option("sw_pdf_body_title_font_color_B", stripslashes(isset($_POST["sw_pdf_body_title_font_color_B"])? $_POST["sw_pdf_body_title_font_color_B"]: "0"));
update_option("sw_pdf_footer", stripslashes(isset($_POST["sw_pdf_footer"])? $_POST["sw_pdf_footer"]: "Page {nb}"));
update_option("sw_pdf_footer_font", stripslashes(isset($_POST["sw_pdf_footer_font"])? $_POST["sw_pdf_footer_font"]: "freesans"));
update_option("sw_pdf_footer_font_size", stripslashes(isset($_POST["sw_pdf_footer_font_size"])? $_POST["sw_pdf_footer_font_size"]: "8"));
update_option("sw_pdf_footer_title_font_color_R", stripslashes(isset($_POST["sw_pdf_footer_title_font_color_R"])? $_POST["sw_pdf_footer_title_font_color_R"]: "0"));
update_option("sw_pdf_footer_title_font_color_G", stripslashes(isset($_POST["sw_pdf_footer_title_font_color_G"])? $_POST["sw_pdf_footer_title_font_color_G"]: "0"));
update_option("sw_pdf_footer_title_font_color_B", stripslashes(isset($_POST["sw_pdf_footer_title_font_color_B"])? $_POST["sw_pdf_footer_title_font_color_B"]: "0"));
update_option("sw_pdf_icon", stripslashes(isset($_POST["sw_pdf_icon"])? $_POST["sw_pdf_icon"]: get_settings('siteurl')."/wp-content/plugins/Post2PDF/pdf.gif"));
}
// Recupera los ficheros PHP de un directorio
function phpFiles($val) {
return preg_match("/\.php$/", $val);
}
// Leo los ficheros php del directorio fonts para saber que fuentes existen
$fuentes = array_values(array_filter(scandir(get_option('__SW_POST2PDF_PATH__')."/fonts"), "phpFiles"));
// Muestra el HTML de la pantalla de administracion
?&gt;
&lt;div class="wrap"&gt;
&lt;h2&gt;Post2PDF Options&lt;/h2&gt;
&lt;fieldset class="options"&gt;
&lt;form name="form" method="post"&gt;
&lt;input type="hidden" name="sw_form" value="1" /&gt;
&lt;h3&gt;PDF Header&lt;/h3&gt;
&lt;table class="optiontable"&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Title:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_title" type="text" id="sw_pdf_title" value="&lt;?php echo (get_option("sw_pdf_title") != "")? get_option("sw_pdf_title"): get_option('blogname'); ?&gt;" size="40" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Subtitle:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_subtitle" type="text" id="sw_pdf_subtitle" value="&lt;?php echo (get_option("sw_pdf_subtitle") != "")? get_option("sw_pdf_subtitle"): "[#the_title()#]"; ?&gt;" size="40" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font size:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_header_title_font_size" type="text" id="sw_pdf_header_title_font_size" value="&lt;?php echo (get_option("sw_pdf_header_title_font_size") != "")? get_option("sw_pdf_header_title_font_size"): "12"; ?&gt;" size="3" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font:&lt;/th&gt;
&lt;td&gt;
&lt;select name="sw_pdf_header_title_font" id="sw_pdf_header_title_font"&gt;
&lt;?php
foreach($fuentes as $fuente) {
$_fuente = preg_replace("/\.php$/", "",$fuente);
?&gt;
&lt;option value="&lt;?php echo $_fuente; ?&gt;"
&lt;?php echo get_option("sw_pdf_header_title_font") == $_fuente? " selected ":""; ?&gt;
&gt;&lt;?php echo $_fuente; ?&gt;&lt;/option&gt;
&lt;?php
}
?&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font color (R, G, B):&lt;/th&gt;
&lt;td&gt;
&lt;input name="sw_pdf_header_title_font_color_R" type="text" id="sw_pdf_header_title_font_color_R" value="&lt;?php echo (get_option("sw_pdf_header_title_font_color_R") != "")? get_option("sw_pdf_header_title_font_color_R"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_header_title_font_color_G" type="text" id="sw_pdf_header_title_font_color_G" value="&lt;?php echo (get_option("sw_pdf_header_title_font_color_G") != "")? get_option("sw_pdf_header_title_font_color_G"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_header_title_font_color_B" type="text" id="sw_pdf_header_title_font_color_B" value="&lt;?php echo (get_option("sw_pdf_header_title_font_color_B") != "")? get_option("sw_pdf_header_title_font_color_B"): "0"; ?&gt;" size="3" /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Image:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_header_image" type="text" id="sw_pdf_header_image" value="&lt;?php echo (get_option("sw_pdf_header_image") != "")? get_option("sw_pdf_header_image"): ""; ?&gt;" size="40" onchange="document.getElementById('sw_head_image').src=this.value" /&gt;
&lt;br /&gt;&lt;strong&gt;Only GIF and JPEG images are allowed&lt;/strong&gt;
&lt;br /&gt;&lt;em&gt;[http://domain.com/images/heade_pdf.png]&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Image width:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_header_image_width" type="text" id="sw_pdf_header_image_width" value="&lt;?php echo (get_option("sw_pdf_header_image_width") != "")? get_option("sw_pdf_header_image_width"): ""; ?&gt;" size="3" /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;td colspan="2" align="center"&gt;&lt;img id="sw_head_image" src="&lt;?php echo (get_option("sw_pdf_header_image") != "")? get_option("sw_pdf_header_image"): get_settings('siteurl')."/wp-content/plugins/Post2PDF/no-image.png"; ?&gt;" alt="No image available"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;PDF Body&lt;/h3&gt;
&lt;table class="optiontable"&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font:&lt;/th&gt;
&lt;td&gt;
&lt;select name="sw_pdf_body_font" id="sw_pdf_body_font"&gt;
&lt;?php
foreach($fuentes as $fuente) {
$_fuente = preg_replace("/\.php$/", "",$fuente);
?&gt;
&lt;option value="&lt;?php echo $_fuente; ?&gt;"
&lt;?php echo get_option("sw_pdf_body_font") == $_fuente? " selected ":""; ?&gt;
&gt;&lt;?php echo $_fuente; ?&gt;&lt;/option&gt;
&lt;?php
}
?&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font size:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_body_font_size" type="text" id="sw_pdf_body_font_size" value="&lt;?php echo (get_option("sw_pdf_body_font_size") != "")? get_option("sw_pdf_body_font_size"): "12"; ?&gt;" size="3" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font color (R, G, B):&lt;/th&gt;
&lt;td&gt;
&lt;input name="sw_pdf_body_title_font_color_R" type="text" id="sw_pdf_body_title_font_color_R" value="&lt;?php echo (get_option("sw_pdf_body_title_font_color_R") != "")? get_option("sw_pdf_body_title_font_color_R"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_body_title_font_color_G" type="text" id="sw_pdf_body_title_font_color_G" value="&lt;?php echo (get_option("sw_pdf_body_title_font_color_G") != "")? get_option("sw_pdf_body_title_font_color_G"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_body_title_font_color_B" type="text" id="sw_pdf_body_title_font_color_B" value="&lt;?php echo (get_option("sw_pdf_body_title_font_color_B") != "")? get_option("sw_pdf_body_title_font_color_B"): "0"; ?&gt;" size="3" /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;PDF Footer&lt;/h3&gt;
&lt;table class="optiontable"&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Footer:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_footer" type="text" id="sw_pdf_footer" value="&lt;?php echo (get_option("sw_pdf_footer") != "")? get_option("sw_pdf_footer"): "Page {nb}"; ?&gt;" size="40" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font:&lt;/th&gt;
&lt;td&gt;
&lt;select name="sw_pdf_footer_font" id="sw_pdf_footer_font"&gt;
&lt;?php
foreach($fuentes as $fuente) {
$_fuente = preg_replace("/\.php$/", "",$fuente);
?&gt;
&lt;option value="&lt;?php echo $_fuente; ?&gt;"
&lt;?php echo get_option("sw_pdf_footer_font") == $_fuente? " selected ":""; ?&gt;
&gt;&lt;?php echo $_fuente; ?&gt;&lt;/option&gt;
&lt;?php
}
?&gt;
&lt;/select&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font size:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_footer_font_size" type="text" id="sw_pdf_footer_font_size" value="&lt;?php echo (get_option("sw_pdf_footer_font_size") != "")? get_option("sw_pdf_footer_font_size"): "8"; ?&gt;" size="3" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Font color (R, G, B):&lt;/th&gt;
&lt;td&gt;
&lt;input name="sw_pdf_footer_title_font_color_R" type="text" id="sw_pdf_footer_title_font_color_R" value="&lt;?php echo (get_option("sw_pdf_footer_title_font_color_R") != "")? get_option("sw_pdf_footer_title_font_color_R"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_footer_title_font_color_G" type="text" id="sw_pdf_footer_title_font_color_G" value="&lt;?php echo (get_option("sw_pdf_footer_title_font_color_G") != "")? get_option("sw_pdf_footer_title_font_color_G"): "0"; ?&gt;" size="3" /&gt;
&amp;nbsp;
&lt;input name="sw_pdf_footer_title_font_color_B" type="text" id="sw_pdf_footer_title_font_color_B" value="&lt;?php echo (get_option("sw_pdf_footer_title_font_color_B") != "")? get_option("sw_pdf_footer_title_font_color_B"): "0"; ?&gt;" size="3" /&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Miscellaneous&lt;/h3&gt;
&lt;table class="optiontable"&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;Author (PDF file):&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_author" type="text" id="sw_pdf_author" value="&lt;?php echo (get_option("sw_pdf_author") != "")? get_option("sw_pdf_author"): __SW_PDF_TITLE_DEFAULT__; ?&gt;" size="40" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;th scope="row"&gt;PDF icon:&lt;/th&gt;
&lt;td&gt;&lt;input name="sw_pdf_icon" type="text" id="sw_pdf_icon" size="40" onchange="document.getElementById('sw_pdf_icon_image').src=this.value" value="&lt;?php echo (get_option("sw_pdf_icon") != "")? get_option("sw_pdf_icon"): get_settings('siteurl') ."/wp-content/plugins/Post2PDF/pdf.gif"; ?&gt;"/&gt;
&lt;br /&gt;&lt;em&gt;[http://domain.com/images/pdf.gif]&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign="top"&gt;
&lt;td colspan="2" align="center"&gt;&lt;img id="sw_pdf_icon_image" src="&lt;?php echo (get_option("sw_pdf_icon") != "")? get_option("sw_pdf_icon"): get_settings('siteurl') ."/wp-content/plugins/Post2PDF/pdf.gif"; ?&gt;" alt="No image available"/&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p class="submit"&gt;&lt;input type="submit" name="Update" value="Update Settings &amp;raquo;" /&gt;&lt;/p&gt;
&lt;/fieldset&gt;
&lt;/div&gt;
&lt;?php
}</code></pre>
<p>Y por último, el código necesario para añadir la pantalla de administración del plugin.</p>
<pre><code>function sw_add_plugin_submenu() {
if (function_exists('add_submenu_page')) {
add_submenu_page('plugins.php', 'Post2PDF', 'Post2PDF', 1, __FILE__, 'sw_write_plugin_submenu');
}
}
add_action('admin_menu', 'sw_add_plugin_submenu');</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/10/30/laboratorio-como-hacer-un-plugin-para-wordpress.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post2PDF: plugin de WordPress para exportar a PDF</title>
		<link>http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php</link>
		<comments>http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php#comments</comments>
		<pubDate>Fri, 27 Oct 2006 15:30:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Laboratorio]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[post2pdf]]></category>
		<category><![CDATA[post2pdf wordpress exporta post pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<img alt="Post2PDF" src="http://sentidoweb.com/img/2006/10/post2pdf.png" width="112" height="127" class="right"/><p>Os presentamos el primer plugin para WordPress realizado por <strong>Sentido Web</strong>.</p>
<h3>Qué es</h3>
<p><strong>Post2PDF</strong> es un plugin desarrollado por <strong>Sentido Web</strong> para <a href="http://wordpress.org">WordPress</a> el cual permite exportar una entrada (<em>post</em>) a formato PDF de Adobe. <strong>Post2PDF</strong> está basado en la librería de PHP <a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf">TCPDF </a> que permite crear documentos PDF, exportando contenido HTML.</p>
<h3>Características</h3>
<p>Su principal característica es exportar los post de WordPress (HTML) a formato PDF, pero además incluye las siguientes opciones:</p>
<ul>
<li>Cofiguración de cabecera: imagen y dos líneas para la cabecera</li>
<li>Configuración del pie de página: pudiendo indicar el número de página actual sobre el total de páginas.</li>
<li>Respeta el formato HTML en gran medida: cabeceras, enlaces, imágenes, &#8230;</li>
<li>Tipos de letra y colores para la cabecera, para el cuerpo del documento y para el pie de página.</li>
<li>Posibildiad de exportar fuentes de letra gracias a la aplicación <strong>TTF2UFM</strong>.</li>
</ul>
<p>Post2PDF solo exportará imágenes contenidas en el mismo servidor, no podrá exportar imágenes enlazadas a otros servidores.</p>
<h3>Instalación</h3>
<p>Se instala como cualquier otro plugin de WordPress, descomprime el archivo zip dentro del directorio <em>/wordpress/wp-content/plugins</em>, después entra en la administración de WordPress y en el apartado Plugins en <em>Plugins Management</em> tendremos que activar el plugin pulsando en <em>Activate</em>.</p>
<p>Una vez activado el plugin, veremos que dentro de las opciones de <em>Plugins</em> (<em>Plugins</em>, <em>Plugins Editor</em>, &#8230;) aparecerá una nueva opción llamada <em>Post2PDF</em>, la cual nos permitirá modificar las opciones de nuestro plugin.</p>
<h3>Configuración</h3>
<p>Dentro de la opción <em>Plugins</em> de la administración de WordPress, podemos acceder a la configuración de Post2PDF pinchando sobre el submenú con el mismo nombre.</p>
<p>Las opciones se dividen en 4 partes: cabecera, cuerpo, pie de página y opciones varias.</p>
<p><strong>PDF Header</strong></p>
<p>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.</p>
<ul>
<li><em>Title</em>: Es la línea principal que forma la cabecera. Permite el valor <strong>__TITLE__</strong> y <strong>__BLOGNAME__</strong> para mostrar el título del post y el nombre del blog respectivamente.</li>
<li><em>Subtitle</em>: Es la línea secundaria de la cabecera, admite también los valores <strong>__TITLE__</strong> y <strong>__BLOGNAME__</strong>.</li>
<li><em>Font size</em>: 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.</li>
<li><em>Font</em>: Nos muestra un desplegable con las fuentes disponibles.</li>
<li><em>Font color (R, G, B)</em>: Indica el color de la letra, en notación decimal (por ejemplo, 255 &#8211; 0 &#8211; 0 será rojo.</li>
<li><em>Image</em>: 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.</li>
<li><em>Image width</em>: Establece el ancho de la imágen.</li>
</ul>
<p><strong>PDF Body</strong></p>
<p>Modifica las opciones del cuerpo del documento.</p>
<ul>
<li><em>Font size</em>: Tamaño de letra del cuerpo del documento.</li>
<li><em>Font</em>: Nos muestra un desplegable con las fuentes disponibles.</li>
<li><em>Font color (R, G, B)</em>: Indica el color de la letra, en notación decimal (por ejemplo, 255 &#8211; 0 &#8211; 0 será rojo.</li>
</ul>
<p><strong>PDF Footer</strong></p>
<p>Modifica las opciones del pie de página del documento.</p>
<ul>
<li><em>Footer</em>: Texto que aparece en el pie de página, admite los valores <strong>__PAGE_NUMBER__</strong> y el valor <strong> __TOTAL_NUMBER_OF_PAGES__</strong> para mostrar la página actual y el número de páginas totales.</li>
<li><em>Font size</em>: Tamaño de letra del cuerpo del documento.</li>
<li><em>Font</em>: Nos muestra un desplegable con las fuentes disponibles.</li>
<li><em>Font color (R, G, B)</em>: Indica el color de la letra, en notación decimal (por ejemplo, 255 &#8211; 0 &#8211; 0 será rojo.</li>
</ul>
<p><strong>Miscellaneous</strong></p>
<p>Opciones varias que no tienen una categoría específica.</p>
<ul>
<li><em>Author (PDF file)</em>: Corresponde al valor del autor que aparece en el documento PDF.</li>
<li><em>PDF icon</em>: URL a la imagen que se mostrará cuando incluimos en icono de llamada al plugin <strong>Post2PDF</strong> en la plantilla de WordPress.</li>
</ul>
<h3>Cómo usarlo</h3>
<p>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:</p>
<p><em>if(function_exists(&#8220;Post2PDF&#8221;)) Post2PDF();</em></p>
<h3>Otras características</h3>
<ul>
<li>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.</li>
<li>TCPDF incluye la utilidad <strong>ttf2ufm</strong>, la cual nos permite incluir la fuente TTF que queramos en nuestro PDF, tan solo deberemos seguir las instrucciones contenidas en el archivo <em>README.TXT</em>.</li>
</ul>
<p><a href="http://sentidoweb.com/temas/desarrollo-web/laboratorio/plugins-wp/index.php">Post2PDF</a></p>
<p><a href="http://sentidoweb.com/lab/plugins/wp/SW_Post2PDF.pdf">Ejemplo de documento PDF</a></p>
<p>Realizado con la versión 2.0.3 de WordPress</p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

