<p><span>Hola a todos. Aquí les traigo un pequeño programa hecho en Ruby para poder transformar archivos en formato PDF a texto llano.</span><br /></p><p><span>Para leer los archivos PDF el programa utilizar el paquete pdf-reader que pueden encontrar en <a href="https://github.com/yob/pdf-reader" rel="nofollow">este link</a>. Así que antes de probarlo debemos tenerlo instalado. Para ello podemos ejecutar el siguiente comando.</span></p><pre class="prettyprint prettyprinted"><span class="com"># gem install pdf-reader</span></pre><p><span>En el código verán que lo primero que que hace el programa es recorrer el vector ARGV, el cuál contiene los argumentos que se le pasan a la aplicación al momento de ejecución. </span><span>Estos argumentos serán las direcciones de todos los archivos PDF que el usuario desea transformar.</span><br /></p><p><span>Luego de esto el programa abre uno por uno todos los archivos pasados y los procesa página a página. Al final crea un nuevo archivo de texto donde se guardará el resultado.</span></p><p><span>Si hay un problema al procesar las páginas se mostrará un mensaje de error.</span></p><pre class="prettyprint prettyprinted"><span class="com">#!/usr/bin/env ruby</span><br /><span class="kwd">require</span><span class="pln"> </span><span class="str">'pdf/reader'</span><br /><span class="com"># Recorremos los argumentos pasados al programa</span><br /><span class="pln">ARGV</span><span class="pun">.</span><span class="pln">each </span><span class="kwd">do</span><span class="pln"> </span><span class="pun">|</span><span class="pln">archivo</span><span class="pun">|</span><br /><span class="pln"> PDF</span><span class="pun">::</span><span class="typ">Reader</span><span class="pun">.</span><span class="pln">open</span><span class="pun">(</span><span class="pln">archivo</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">do</span><span class="pln"> </span><span class="pun">|</span><span class="pln">lector</span><span class="pun">|</span><span class="pln"> </span><span class="com"># abrimos el archivo como pdf</span><br /><span class="pln"> puts </span><span class="str">"Convirtiendo: #{archivo}"</span><br /><span class="pln"> numero_pagina </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="com"># un contador de paginas</span><br /><span class="pln"> txt </span><span class="pun">=</span><span class="pln"> lector</span><span class="pun">.</span><span class="pln">pages</span><span class="pun">.</span><span class="pln">map </span><span class="kwd">do</span><span class="pln"> </span><span class="pun">|</span><span class="pln">pagina</span><span class="pun">|</span><span class="pln"> </span><span class="com"># leemos las paginas del archivo</span><br /><span class="pln"> numero_pagina </span><span class="pun">+=</span><span class="pln"> </span><span class="lit">1</span><br /><span class="pln"> </span><span class="kwd">begin</span><br /><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="str">"Convirtiendo Pagina #{numero_pagina}/#{lector.page_count}\r"</span><br /><span class="pln"> pagina</span><span class="pun">.</span><span class="pln">text</span><br /><span class="pln"> </span><span class="kwd">rescue</span><br /><span class="pln"> puts </span><span class="str">"Error: La pagina #{numero_pagina}/#{lector.page_count} no se pudo convertir"</span><br /><span class="pln"> </span><span class="str">''</span><br /><span class="pln"> </span><span class="kwd">end</span><br /><span class="pln"> </span><span class="kwd">end</span><br /><span class="pln"> puts </span><span class="str">"\nGuardando el archivo de texto"</span><br /><span class="pln"> </span><span class="typ">File</span><span class="pun">.</span><span class="pln">write archivo</span><span class="pun">+</span><span class="str">'.txt'</span><span class="pun">,</span><span class="pln"> txt</span><span class="pun">.</span><span class="pln">join</span><span class="pun">(</span><span class="str">"\n"</span><span class="pun">)</span><span class="pln"> </span><span class="com"># se guarda el archivo de texto</span><br /><span class="pln"> </span><span class="kwd">end</span><br /><span class="kwd">end</span><span class="pun">.</span><span class="pln">empty</span><span class="pun">?</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="kwd">begin</span><br /><span class="pln"> </span><span class="com"># si no se especifico ningun archivo, le mostramos al usuario como usar el programa</span><br /><span class="pln"> puts </span><span class="str">'Modo de uso: '</span><br /><span class="pln"> puts </span><span class="str">'ruby pdfatexto.rb archivo.pdf [otro_archivo.pdf]'</span><br /><span class="kwd">end</span></pre><p><span>Si guardamos este código en un archivo llamado pdfatexto.rb, podemos hacerlo funcionar ejecutando el siguiente comando:</span><br /></p><pre class="prettyprint prettyprinted"><span><span class="pln">$ ruby pdfatexto</span><span class="pun">.</span><span class="pln">rb archivo</span><span class="pun">.</span><span class="pln">pdf </span><span class="pun">[</span><span class="pln">archivo</span><span class="pun">.</span><span class="pln">pdf</span><span class="pun">]</span></span></pre><p><span>Si al programa no le diéramos la dirección de al menos un archivo PDF, nos mostraría un mensaje indicándonos la manera correcta de utilizarlo.</span><br /></p><p>Bueno, eso ha sido todo.</p>