"La Gaceta de Linux...¡haciendo de Linux algo un poco más divertido!"


Convirtiendo a Libros los HOWTOs de Linux

Por: Mark Nielsen

Traducción al español por Miguel Angel Rojas Aquino
el día 19 de Mayo 2001, para La Gaceta de Linux


  1. Introducción
  2. Script en Perl para convertir los archivos Postscript
  3. Conclusión
  4. Referencias

Introducción

Deseaba imprimir los HOWTOs de Linux en formato de libro. Sin embargo, no me divierte convertir los HOWTOs manualmente. En lugar de ello, ya que todos los HOWTOs están disponibles en formato Postscript, me imaginé que podría bajar los archivos Postscript de manera periódica y utilizar diversas herramientas para convertir los archivos Postscript en archivos Postscript y PDF con formato de libro. Logré esto con un script en Perl relativamente pequeño utilizando una variedad de herramientas Unix. Planeo tener un proceso cron que corra al menos una vez a la semana para actualizar los libros.

Script en Perl para convertir los archivos Postscript

El script en Perl se encuentra en esta sección, y también lo puedes obtener aquí.

#!/usr/bin/perl

# ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz
# http://www.dcs.ed.ac.uk/home/ajcd/psutils/ 
# cp Makefile.unix Makefile
# ln -s /usr/bin/perl /usr/local/bin/perl
# mkdir -p /usr/local/share/man/man1
# /usr/local/bin/psbook

#system ("lynx --source ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz > /tmp/psutils.tar.gz)";
# system ("cd /tmp; tar -zxvf psutils.tar.gz; cd psutils; cp Makefile.unix Makefile");
# system ("ln -s /usr/bin/perl /usr/local/bin/perl; mkdir -p /usr/local/share/man/man1");
# system ("cd /tmp/psutils; make; make install; ln -s /usr/local/bin/psutils /usr/bin/psutils");

# Ignora las lineas anteriores, a menos que no tengas psutils.
# Mantengo las lineas anteriores para recordar como instale psutils.

my $TempFile1 = "/tmp/HOWTO_Convert_1.ps";
my $TempFile2 = "/tmp/HOWTO_Convert_1.pdf";
my $SourceDir = "/root/HOWTO";
my $Destination = "/root/HOWTO_Books";
my $ZippedPDF = "/root/HOWTO_books_pdf.tgz";
my $ZippedPS = "/root/HOWTO_books_ps.tgz";

if (!(-d $Destination)) {system "mkdir $Destination";}

print "Descargando HOWTOs desde http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/Linux-ps-HOWTOs.tar.gz\n";
system ("lynx --source http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/Linux-ps-HOWTOs.tar.gz > $SourceDir/Linux-ps-HOWTOs.tar.gz");
system ("cd $SourceDir; tar -zxvf Linux-ps-HOWTOs.tar.gz"); 

my @Files = <$SourceDir/*.ps.gz>;

foreach my $File (@Files)
  {
  my $command="gunzip -c $File | /usr/bin/psbook -s4 | mpage -2 > $TempFile1";
  print "Ejecutando psbook y mpage sobre $File\n$command\n";
  system ($command);
  $command = "ps2pdf $TempFile1 $TempFile2";
  print "Ejecutando ps2pdf\n$command\n";
  system ($command);

  my (@Temp) = split(/\//,$File);
  my $NamePDF = pop @Temp;
  my $NamePS = $NamePDF;
  $NamePDF =~ s/\.ps\.gz$/\.pdf/;
  $NamePS =~ s/\.ps\.gz$/\.ps/;
  my $NewPS = "$Destination/$NamePS";
  my $NewPDF = "$Destination/$NamePDF";

  system ("mv $TempFile2 $NewPDF"); 
  print "Creado el HOWTO con formato de libro, $NewPDF\n";
  system ("mv $TempFile1 $NewPS");
  print "Creado el HOWTO con formato de libro, $NewPS\n";
  }

print "Creando los archivos zip $ZippedPDF y $ZippedPS\n";
system ("tar -zcvf $ZippedPDF $Destination/*.pdf");
system ("tar -zcvf $ZippedPS $Destination/*.ps");

Conclusión

Este es solamente un sencillo script en Perl que utilizo para descargar y convertir los HOWTOs Postscript. Mis objetivos futuros incluyen:
  1. utilizar LWP en Perl en lugar de Lynx. Bastante sencillo.
  2. convertir el script de Perl a Python.
  3. una mejor verificación de errores si el archivo no es descargado o si la conversión no funciona.
  4. crear objetos que acepten texto, TeX, Postscript, PDF, u otros formatos que puedan ser convertidos a Postscript de manera fácil y luego a formato de libro.
Por el momento, mi sencillo script en Perl funciona bien. Estoy interesado en convertir otros documentos para otras personas siempre y cuando dicha documentación sea alguna forma de documentación libre, tal como las Licencias para Documentación localizadas en www.gnu.org.

Referencias

  1. 10/2000 Micro Publicación: Parte 3 , por Mark Nielsen .
  2. 7-1-2000 Micro Publicación, parte II (actualización de Mark)
  3. 12-1999 -- Micro Publicación.
  4. Si este articulo es modificado, estará disponible en http://www.gnujobs.com/Articles/18/HOWTO_Books.html

Mark trabaja como consultor independiente donando tiempo a causas como GNUJobs.com, escribiendo artículos, escribiendo software libre, y trabajando como voluntario en eastmont.net.

Mark Nielsen

Mark trabaja en ZING (www.genericbooks.com) y GNUJobs.com. Anteriormente, Mark fundó The Computer Underground. Mark trabaja en proyectos no comerciales y de voluntarios que promuevan la literatura y el software libres. Para ganarse el sustento, recluta gente para trabajos relacionados con GNU y también provee soluciones a problemas de web/bases de datos utilizando Linux, FreeBSD, Apache, Zope, Perl, Python y PostgreSQL.


Copyright © 2001, Mark Nielsen.
Licencia de copia en http://www.linuxgazette.com/copying.html
Publicado en el Número 66 de Linux Gazette, Mayo 2001