<?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; pdf</title>
	<atom:link href="http://sentidoweb.com/tag/pdf/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>PDF.js librería Javascript para leer PDF en Canvas</title>
		<link>http://sentidoweb.com/2011/06/15/pdf-js-libreria-javascript-para-leer-pdf-en-canvas.php</link>
		<comments>http://sentidoweb.com/2011/06/15/pdf-js-libreria-javascript-para-leer-pdf-en-canvas.php#comments</comments>
		<pubDate>Wed, 15 Jun 2011 16:48:49 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2737</guid>
		<description><![CDATA[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. &#60;html&#62; &#60;head&#62; &#60;title&#62;Simple pdf.js page viewer&#60;/title&#62; &#60;script type="text/javascript" src="pdf.js"&#62;&#60;/script&#62; &#60;style type"text/css"&#62; body { margin: 6px; padding: 0px; background-color: [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<pre><code><pre class="html"><span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html&gt;</span></a></span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">&lt;head&gt;</span></a></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/title.html"><span style="color: #000000; font-weight: bold;">&lt;title&gt;</span></a></span>Simple pdf.js page viewer<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span>
          <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"pdf.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/style.html"><span style="color: #000000; font-weight: bold;">&lt;style</span></a> <span style="color: #000066;">type</span><span style="color: #ff0000;">"text/css"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
body {
  margin: 6px;
  padding: 0px;
  background-color: #c0bdb7;
}
#controls {
  border-bottom: 1px solid black;
  position:fixed;
  left: 0px; top: 0px;
  width: 100%;
  padding: 7px;
  background-color: rgb(242, 240, 238);
}
span#info {
  float: right;
  font: 14px sans-serif;
  margin-right: 10px;
}
#viewer {
  margin: auto;
  border: 1px solid black;
  width: 8.5in;
  height: 11in;
}
#pageNumber {
  text-align: right;
}
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style&gt;</span></span>
&nbsp;
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
function queryParams() {
    var qs = window.location.search.substring(1);
    var kvs = qs.split(&quot;<span style="color: #ddbb00;">&amp;&quot;);</span>
    var params = { };
    for (var i = 0; i <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a> kvs.length; ++i<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        var kv = kvs<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.split<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"="</span><span style="color: #66cc66;">&#41;</span>;
        params<span style="color: #66cc66;">&#91;</span>unescape<span style="color: #66cc66;">&#40;</span>kv<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> = unescape<span style="color: #66cc66;">&#40;</span>kv<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
    return params;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
var canvas, numPages, pageDisplay, pageNum;
function load<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    canvas = document.getElementById<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"canvas"</span><span style="color: #66cc66;">&#41;</span>;
    canvas.mozOpaque = true;
    pageDisplay = document.getElementById<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"pageNumber"</span><span style="color: #66cc66;">&#41;</span>;
    infoDisplay = document.getElementById<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"info"</span><span style="color: #66cc66;">&#41;</span>;
    pageNum = parseInt<span style="color: #66cc66;">&#40;</span>queryParams<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.page<span style="color: #66cc66;">&#41;</span> || <span style="color: #cc66cc;">1</span>;
    fileName = queryParams<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.file || <span style="color: #ff0000;">"compressed.tracemonkey-pldi-09.pdf"</span>;
    open<span style="color: #66cc66;">&#40;</span>fileName<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
function open<span style="color: #66cc66;">&#40;</span>url<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    document.title = url;
    req = new XMLHttpRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    req.open<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"GET"</span>, url<span style="color: #66cc66;">&#41;</span>;
    req.mozResponseType = req.responseType = <span style="color: #ff0000;">"arraybuffer"</span>;
    req.expected = <span style="color: #66cc66;">&#40;</span>document.URL.indexOf<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"file:"</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> ? <span style="color: #cc66cc;">0</span> : <span style="color: #cc66cc;">200</span>;
    req.onreadystatechange = xhrstate;
    req.send<span style="color: #66cc66;">&#40;</span>null<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
function xhrstate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    if <span style="color: #66cc66;">&#40;</span>req.readyState == <span style="color: #cc66cc;">4</span> &amp;&amp; req.status == req.expected<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        var <span style="color: #000066;">data</span> = req.mozResponseArrayBuffer ||
                   req.mozResponse ||
                   req.responseArrayBuffer ||
                   req.response;
        pdf = new PDFDoc<span style="color: #66cc66;">&#40;</span>new Stream<span style="color: #66cc66;">&#40;</span><span style="color: #000066;">data</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        numPages = pdf.numPages;
        document.getElementById<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"numPages"</span><span style="color: #66cc66;">&#41;</span>.innerHTML = numPages.toString<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        gotoPage<span style="color: #66cc66;">&#40;</span>pageNum<span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
function displayPage<span style="color: #66cc66;">&#40;</span>num<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    pageDisplay.value = num;
&nbsp;
    var t0 = Date.now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var page = pdf.getPage<span style="color: #66cc66;">&#40;</span>pageNum = num<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var t1 = Date.now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var ctx = canvas.getContext<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"2d"</span><span style="color: #66cc66;">&#41;</span>;
    ctx.save<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    ctx.fillStyle = <span style="color: #ff0000;">"rgb(255, 255, 255)"</span>;
    ctx.fillRect<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, canvas.width, canvas.height<span style="color: #66cc66;">&#41;</span>;
    ctx.restore<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var gfx = new CanvasGraphics<span style="color: #66cc66;">&#40;</span>ctx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    // page.compile will collect all fonts <span style="color: #000066;">for</span> us, once we have loaded them
    // we can trigger the actual page rendering with page.display
    var fonts = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
    page.compile<span style="color: #66cc66;">&#40;</span>gfx, fonts<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var t2 = Date.now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    // This should be called when font loading is complete
    page.display<span style="color: #66cc66;">&#40;</span>gfx<span style="color: #66cc66;">&#41;</span>;
&nbsp;
    var t3 = Date.now<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    infoDisplay.innerHTML = <span style="color: #ff0000;">"Time to load/compile/render: "</span>+ <span style="color: #66cc66;">&#40;</span>t1 - t0<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">"/"</span> + <span style="color: #66cc66;">&#40;</span>t2 - t1<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">"/"</span> + <span style="color: #66cc66;">&#40;</span>t3 - t2<span style="color: #66cc66;">&#41;</span> + <span style="color: #ff0000;">" ms"</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
function nextPage<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    if <span style="color: #66cc66;">&#40;</span>pageNum <span style="color: #000000; font-weight: bold;">&lt;</span></a> numPages<span style="color: #66cc66;">&#41;</span>
        ++pageNum;
    displayPage<span style="color: #66cc66;">&#40;</span>pageNum<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
function prevPage<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    if <span style="color: #66cc66;">&#40;</span>pageNum <span style="color: #000000; font-weight: bold;">&gt;</span></a></span> 1)
        --pageNum;
    displayPage(pageNum);
}
function gotoPage(num) {
    if (0 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>= num &amp;&amp; num <span style="color: #000000; font-weight: bold;">&lt;</span></a>= numPages<span style="color: #66cc66;">&#41;</span>
        pageNum = num;
    displayPage<span style="color: #66cc66;">&#40;</span>pageNum<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head&gt;</span></span>
&nbsp;
<span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body</span></a> <span style="color: #000066;">onload</span>=<span style="color: #ff0000;">"load();"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"controls"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/button.html"><span style="color: #000000; font-weight: bold;">&lt;button</span></a> <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">"prevPage();"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Previous<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/button&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/button.html"><span style="color: #000000; font-weight: bold;">&lt;button</span></a> <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">"nextPage();"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Next<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/button&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text"</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"pageNumber"</span> <span style="color: #000066;">onchange</span>=<span style="color: #ff0000;">"gotoPage(this.value);"</span>
           <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"1"</span> <span style="color: #000066;">size</span>=<span style="color: #ff0000;">"4"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/input&gt;</span></span>
    / <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"numPages"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>--<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">&lt;span</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"info"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/span&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
  <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"viewer"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>
    <span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- Canvas dimensions must be specified in CSS pixels.  CSS pixels
      -- are always 96 dpi.  These dimensions are 8.5x11in at 96dpi. --&gt;</span></span>
    <span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"canvas"</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">"816"</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">"1056"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/canvas&gt;</span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span></pre></code></pre>
<p><a href="https://github.com/andreasgal/pdf.js">PDF.js</a></p>
<p>Vía / <a href="http://twitter.com/#!/badass_js/status/81002447287484416">@badass_js</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2011/06/15/pdf-js-libreria-javascript-para-leer-pdf-en-canvas.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Subir y exportar documentos usando Google Docs y PHP</title>
		<link>http://sentidoweb.com/2011/03/27/subir-y-exportar-documentos-usando-google-docs-y-php.php</link>
		<comments>http://sentidoweb.com/2011/03/27/subir-y-exportar-documentos-usando-google-docs-y-php.php#comments</comments>
		<pubDate>Sun, 27 Mar 2011 18:46:43 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[exportar]]></category>
		<category><![CDATA[google docs]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[ppt]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2703</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>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).</p>
<pre><code><pre class="php"><span style="color: #808080; font-style: italic;">// Datos de login a la API de Google</span>
<span style="color: #3E6D8F;">$clientlogin_url</span> = <span style="color: #ff0000;">"https://www.google.com/accounts/ClientLogin"</span>;
<span style="color: #3E6D8F;">$clientlogin_post</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">"accountType"</span> =&gt; <span style="color: #ff0000;">"GOOGLE"</span>,
    <span style="color: #ff0000;">"Email"</span> =&gt; <span style="color: #ff0000;">"miemail@gmail.com"</span>,
    <span style="color: #ff0000;">"Passwd"</span> =&gt; <span style="color: #ff0000;">"mipassword"</span>,
    <span style="color: #ff0000;">"service"</span> =&gt; <span style="color: #ff0000;">"writely"</span>,
    <span style="color: #ff0000;">"source"</span> =&gt; <span style="color: #ff0000;">"WPDOCS"</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Inicializamos el CURL</span>
<span style="color: #3E6D8F;">$curl</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$clientlogin_url</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Obtenemos el string de autenticaci&Atilde;&sup3;n</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$clientlogin_post</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPAUTH, CURLAUTH_ANY<span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$response</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"/Auth=([a-z0-9_<span style="color: #000099; font-weight: bold;">\-</span>]+)/i"</span>, <span style="color: #3E6D8F;">$response</span>, <span style="color: #3E6D8F;">$matches</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$auth</span> = <span style="color: #3E6D8F;">$matches</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Cabeceras de autenticaci&Atilde;&sup3;n</span>
<span style="color: #3E6D8F;">$headers</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">"Authorization: GoogleLogin auth="</span> . <span style="color: #3E6D8F;">$auth</span>,
    <span style="color: #ff0000;">"GData-Version: 3.0"</span>,
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Recuperamos los ficheros y carpetas que tenemos en Google Docs para no crear dos veces la misma carpeta</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://docs.google.com/feeds/default/private/full?showfolders=true"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPHEADER, <span style="color: #3E6D8F;">$headers</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$listado</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$nombre_carpeta</span> = <span style="color: #ff0000;">'WPDOCS'</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Si no se ha creado la carpeta, la creamos</span>
<span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/strpos"><span style="color: #000066;">strpos</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$listado</span>, <span style="color: #ff0000;">'&lt;title&gt;'</span>.<span style="color: #3E6D8F;">$nombre_carpeta</span>.<span style="color: #ff0000;">'&lt;/title&gt;'</span><span style="color: #66cc66;">&#41;</span> === <span style="color: #000000; font-weight: bold;">FALSE</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">// Make the request</span>
  <span style="color: #3E6D8F;">$h</span> = <a href="http://www.php.net/array_merge"><span style="color: #000066;">array_merge</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$headers</span>,<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Content-Type: application/atom+xml'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$xml</span> = <span style="color: #ff0000;">'&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;&gt;&lt;category scheme=&quot;http://schemas.google.com/g/2005#kind&quot; term=&quot;http://schemas.google.com/docs/2007#folder&quot;/&gt;&lt;title&gt;'</span>.<span style="color: #3E6D8F;">$nombre_carpeta</span>.<span style="color: #ff0000;">'&lt;/title&gt;&lt;/entry&gt;'</span>;
  curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://docs.google.com/feeds/default/private/full"</span><span style="color: #66cc66;">&#41;</span>;
  curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPHEADER, <span style="color: #3E6D8F;">$h</span><span style="color: #66cc66;">&#41;</span>;
  curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$xml</span><span style="color: #66cc66;">&#41;</span>;
  curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
  <span style="color: #3E6D8F;">$response</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$response</span> = simplexml_load_string<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$response</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$id_folder</span> = <span style="color: #3E6D8F;">$response</span>-&gt;<span style="color: #006600;">id</span>;
<span style="color: #66cc66;">&#125;</span> <span style="color: #723b00;">else</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">// Recuperamos la ID de la carpeta creada anteriormente</span>
  <a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"#&lt;title&gt;$nombre_carpeta&lt;/title&gt;&lt;content type='application/atom<span style="color: #000099; font-weight: bold;">\+</span>xml;type=feed' src='([^']+)'#"</span>, <span style="color: #3E6D8F;">$listado</span>, <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$id_folder</span> = <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// Subimos el PPT</span>
<span style="color: #3E6D8F;">$h</span> = <a href="http://www.php.net/array_merge"><span style="color: #000066;">array_merge</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$headers</span>,<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Content-Type: application/vnd.ms-powerpoint'</span>, <span style="color: #ff0000;">'Slug: fichero'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$filepath</span>=<span style="color: #ff0000;">'/path/fichero.ppt'</span>;
<span style="color: #3E6D8F;">$data</span>=<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/fread"><span style="color: #000066;">fread</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/fopen"><span style="color: #000066;">fopen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$filepath</span>, <span style="color: #ff0000;">"rb"</span><span style="color: #66cc66;">&#41;</span>, <a href="http://www.php.net/filesize"><span style="color: #000066;">filesize</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$filepath</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://docs.google.com/feeds/default/private/full"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPHEADER, <span style="color: #3E6D8F;">$h</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$data</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$response</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$response</span> = simplexml_load_string<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$response</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$id_doc</span> = <span style="color: #3E6D8F;">$response</span>-&gt;<span style="color: #006600;">id</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Limpiamos los IDs de los ficheros devueltos por Google, solo nos interesa del %3A para adelante</span>
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/%3A(.+)/'</span>, <span style="color: #3E6D8F;">$id_doc</span>, <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$id_doc</span> = <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/%3A(.+)/'</span>, <span style="color: #3E6D8F;">$id_folder</span>, <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$id_folder</span> = <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Lo movemos a la carpeta</span>
<span style="color: #3E6D8F;">$h</span> = <a href="http://www.php.net/array_merge"><span style="color: #000066;">array_merge</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$headers</span>,<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Content-Type: application/atom+xml'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$data</span> = <span style="color: #ff0000;">'&lt;?xml version=<span style="color: #000099; font-weight: bold;">\'</span>1.0<span style="color: #000099; font-weight: bold;">\'</span> encoding=<span style="color: #000099; font-weight: bold;">\'</span>UTF-8<span style="color: #000099; font-weight: bold;">\'</span>?&gt;&lt;entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;&gt;&lt;id&gt;https://docs.google.com/feeds/default/private/full/document%3A'</span>.<span style="color: #3E6D8F;">$id_doc</span>.<span style="color: #ff0000;">'&lt;/id&gt;&lt;/entry&gt;'</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://docs.google.com/feeds/default/private/full/folder%3A"</span>.<span style="color: #3E6D8F;">$id_folder</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPHEADER, <span style="color: #3E6D8F;">$h</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$data</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$response</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//header('Content-type: text/xml');</span>
<span style="color: #808080; font-style: italic;">//echo $response;</span>
<span style="color: #808080; font-style: italic;">// Parse the response</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// Exportamos a HTML</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://docs.google.com/feeds/download/presentations/Export?docID=$id_doc&amp;exportFormat=pdf"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_HTTPHEADER, <span style="color: #3E6D8F;">$h</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span>, CURLOPT_POST, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/header"><span style="color: #000066;">header</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Content-type: application/pdf'</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$curl</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p>Vía / <a href="http://kovshenin.com/archives/google-docs-api-client-login-with-php-and-curl/">Google Docs API: Client Login with PHP and Curl</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2011/03/27/subir-y-exportar-documentos-usando-google-docs-y-php.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extraer textos en PDF desde PHP</title>
		<link>http://sentidoweb.com/2010/05/07/extraer-textos-en-pdf-desde-php.php</link>
		<comments>http://sentidoweb.com/2010/05/07/extraer-textos-en-pdf-desde-php.php#comments</comments>
		<pubDate>Thu, 06 May 2010 22:08:52 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2301</guid>
		<description><![CDATA[Interesante librería que nos permite extraer textos de ficheros PDF, ignora todo aquello que no esté como texto en una capa y soporta ASCIIHexDecode, ASCII85Decode, FlateDecode: include&#40;'class.pdf2text.php'&#41;; $a = new PDF2Text&#40;&#41;; $a-&#62;setFilename&#40;'test.pdf'&#41;; $a-&#62;decodePDF&#40;&#41;; echo $a-&#62;output&#40;&#41;; PDF Text Extractor]]></description>
			<content:encoded><![CDATA[Interesante librería que nos permite extraer textos de ficheros PDF, ignora todo aquello que no esté como texto en una capa y soporta ASCIIHexDecode, ASCII85Decode, FlateDecode:
<pre><code><pre class="php"><span style="color: #723b00;">include</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'class.pdf2text.php'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$a</span> = <span style="color: #000000; font-weight: bold;">new</span> PDF2Text<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$a</span>-&gt;<span style="color: #006600;">setFilename</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'test.pdf'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$a</span>-&gt;<span style="color: #006600;">decodePDF</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #3E6D8F;">$a</span>-&gt;<span style="color: #006600;">output</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<a href="http://www.phpclasses.org/package/6155-PHP-Extract-text-from-PDF-files.html">PDF Text Extractor</a>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/05/07/extraer-textos-en-pdf-desde-php.php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jsPDF: crea PDFs directamente desde Javascript</title>
		<link>http://sentidoweb.com/2010/01/13/jspdf-crea-pdfs-directamente-desde-javascript.php</link>
		<comments>http://sentidoweb.com/2010/01/13/jspdf-crea-pdfs-directamente-desde-javascript.php#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:06:24 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2114</guid>
		<description><![CDATA[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: &#160; var doc = new jsPDF&#40;&#41;; doc.setFontSize&#40;22&#41;; doc.text&#40;20, 20, 'This is a title'&#41;; &#160; doc.setFontSize&#40;16&#41;; doc.text&#40;20, 30, 'This is some normal [...]]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<pre><code><pre class="javascript">&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> doc = <span style="color: #003366; font-weight: bold;">new</span> jsPDF<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
doc.<span style="color: #006600;">setFontSize</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">22</span><span style="color: #66cc66;">&#41;</span>;
doc.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">20</span>, <span style="color: #CC0000;">20</span>, <span style="color: #3366CC;">'This is a title'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
doc.<span style="color: #006600;">setFontSize</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">16</span><span style="color: #66cc66;">&#41;</span>;
doc.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">20</span>, <span style="color: #CC0000;">30</span>, <span style="color: #3366CC;">'This is some normal sized text underneath.'</span><span style="color: #66cc66;">&#41;</span>;	
&nbsp;
<span style="color: #009900; font-style: italic;">// Output as Data URI</span>
doc.<span style="color: #006600;">output</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'datauri'</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p>A mí en Firefox no me ha funcionado, pero en Chrome sí.</p>
<p><a href="http://code.google.com/p/jspdf/">jsPDF</a></a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/jspdf_generates_pdf_documents_using_pure_javascri_2.html">DZone</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/01/13/jspdf-crea-pdfs-directamente-desde-javascript.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crear PDFs con PHP y Haru</title>
		<link>http://sentidoweb.com/2008/11/18/crear-pdfs-con-php-y-haru.php</link>
		<comments>http://sentidoweb.com/2008/11/18/crear-pdfs-con-php-y-haru.php#comments</comments>
		<pubDate>Tue, 18 Nov 2008 18:42:36 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[haru]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2008/11/18/crear-pdfs-con-php-y-haru.php</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[Un gran tutorial que explica cómo crear documentos PDF con <a href="http://libharu.org">Haru</a>, 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.
<a href="http://devzone.zend.com/article/4044-Dynamically-Generating-PDF-Files-with-PHP-and-Haru-">Dynamically Generating PDF Files with PHP and Haru</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2008/11/18/crear-pdfs-con-php-y-haru.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nueva versión de TCPDF, clase PHP para crear PDFs</title>
		<link>http://sentidoweb.com/2008/04/23/nueva-version-de-tcpdf-clase-php-para-crear-pdfs.php</link>
		<comments>http://sentidoweb.com/2008/04/23/nueva-version-de-tcpdf-clase-php-para-crear-pdfs.php#comments</comments>
		<pubDate>Wed, 23 Apr 2008 21:00:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[TCPDF]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2008/04/23/nueva-version-de-tcpdf-clase-php-para-crear-pdfs.php</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>TCPDF es una <a href="http://sentidoweb.com/2006/08/18/tcpdf-mas-pdf-con-php.php">librería PHP que permite generar PDFs</a>, la cual usé para crear <a href="http://sentidoweb.com/2006/10/27/post2pdf-plugin-de-wordpress-para-exportar-a-pdf.php">Post2PDF</a> (plugin para WP que exporta a PDF las librerías).</p>
<p>Entre las novedades que nos ofrece la versión 3 nos encontramos con:</p>
<ul><li>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.</li>
<li>Posibilidad de añadir transparencia a los elementos</li>
<li>Mejoras para el tratamiento de los colores: CMYK o colores HTML</li>
<li>Mejoras en el core y en las clases: propiedades privadas&#8230;</li>
<li>Ejemplos actualizados</li>
<li>Cambio de licencia a LGPL 2.1</li>
<li>Solución de errores</li></ul>
<p><a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf">TCPDF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2008/04/23/nueva-version-de-tcpdf-clase-php-para-crear-pdfs.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: 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>
		<item>
		<title>TCPDF: más PDF con PHP</title>
		<link>http://sentidoweb.com/2006/08/18/tcpdf-mas-pdf-con-php.php</link>
		<comments>http://sentidoweb.com/2006/08/18/tcpdf-mas-pdf-con-php.php#comments</comments>
		<pubDate>Fri, 18 Aug 2006 20:43:29 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[TCPDF crear PDF con PHP]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/08/18/tcpdf-mas-pdf-con-php.php</guid>
		<description><![CDATA[Ya de vuelta al &#8220;cole&#8221;, 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Ya de vuelta al &#8220;cole&#8221;, 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 <a href="http://sentidoweb.com/2006/07/24/laboratorio-creando-documentos-pdf-con-zend-framework.php">PDF con PHP</a>. 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 <a href="http://sentidoweb.com/2006/07/28/fpdf-libreraa-php-para-crear-pdfs.php">FPDF</a>, la cual es mucho más completa, lo que facilita enormemente la creación de PDFs.</p>
<p>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:</p>
<ul><li>Admite todos los formatos ISO de páginas.</li>
<li>UTF-8 y Unicode.</li>
<li>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.</li>
<li>Códigos de barra.</li>
<li>Admite TrueTypeUnicode, TrueType y Type1.</li>
<li>Soporta formatos personalizados de páginas, márgenes y unidades de medida.</li>
<li>Encabezados y pie de páginas.</li>
<li>Saltos de página.</li>
<li>Numeración de páginas.</li>
<li>Saltos de línea y justificación de texto.</li>
<li>Imágenes JPEG y PNG.</li>
<li>Colores.</li>
<li>Links.</li>
<li>Admite compresión de página, necesita la extensión <a href="http://www.gzip.org/zlib/">zlib</a>.</li>
<li>Y algo muy importante, está completamente documentado.</li>
</ul>
<p><a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf">TCPDF</a></p>
<p>Vía / <a href="http://www.sitepoint.com/blogs/2006/08/09/scripters-utf-8-survival-guide-slides/">SitePoint</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/08/18/tcpdf-mas-pdf-con-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FPDF: librería PHP para crear PDFs</title>
		<link>http://sentidoweb.com/2006/07/28/fpdf-libreria-php-para-crear-pdfs.php</link>
		<comments>http://sentidoweb.com/2006/07/28/fpdf-libreria-php-para-crear-pdfs.php#comments</comments>
		<pubDate>Fri, 28 Jul 2006 22:28:15 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[fpdf]]></category>
		<category><![CDATA[fpdf php pdf]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2006/07/28/fpdf-libreria-php-para-crear-pdfs.php</guid>
		<description><![CDATA[Debido 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 [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="fpdf.png" src="http://sentidoweb.com/img/2006/07/fpdf.png" width="109" height="81" class="right"/>Debido 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 <strong>gratuita</strong>, se puede usar libremente y modificar según nuestras necesidades.<p>
<p>Entre las funcionalidades que nos ofrece esta librería nos encontramos:</p>
<ul><li>Elección de la unidad de medida, formato de página y márgenes</li>
<li>Gestión de cabeceras y pies de página</li>
<li>Salto de página automático</li>
<li>Salto de línea y justificación del texto automáticos</li>
<li>Admisión de imágenes (JPEG y PNG)</li>
<li>Colores</li>
<li>Enlaces</li>
<li>Admisión de fuentes TrueType, Type1 y codificación</li>
<li>Compresión de página</li>
<li>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.</ul>
<p>La instalación es sencilla, lo copias en el directorio donde guardes las librerías e incluyes la ruta en el <em>include_path</em> del <em>php.ini</em>.</p>
<p><a href="http://www.fpdf.org/">FDPD</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2006/07/28/fpdf-libreria-php-para-crear-pdfs.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

