Cosas Interesantes

domingo, 20 de junio de 2010

Arreglando la conversión de un PDF en libro ePUB para Mi PAPYRE 6.1 reader ¡con muchas notas a pie de libro!

Para hacer la conversión del título “Corsarios de Levante” partimos de un PDF quePAPYRE STREET está protegido por lo que no ha sido posible realizar las tareas de pre-proceso (recortar pies y cabeceras, revisar el reflow, etc…) típicas para conseguir una conversión sin muchos problemas. Ha sido necesario por tanto depurar pies y cabeceras que aparecían mezclados en mitad del texto y otros errores típicos en estos casos de los que ya hemos hablado en este BLOG. Pero este libro se caracteriza además por incluir casi 100 notas a pie de libro (añadidas por el editor digital de la versión PDF, no por el autor original) que aclaran muchos de los términos marineros y militares del relato. Como mejoran bastante la experiencia de lectura me parecía necesario incluirlas en la versión ePUB.

Gestionando un montón de notas
notas en PDF
En el archivo PDF, las notas aparecen originalmente como se muestra en la foto, pero después de la conversión, como podéis comprobar aparecen simplemente como un número “pegado” a la palabra en cuestión. Un auténtico desastre multiplicado por cien.

Despues de convertir
Así que se impone utilizar RegEx para arreglar este entuerto.
Empezamos a buscar una expresión de búsqueda que nos encuentre todas las ocurrencias y nada más que las ocurrencias relacionadas con este error.
Necesitamos una expresión que encuentre palabras terminadas en un número y con un espacio o signo de puntuación a continuación. Desgraciadamente si no delimitamos cuantos números estamos buscando, la expresión nos encontrará también, cosas como nombres de estilo CSS (“calibre9”, por ejemplo). Así que lo partimos en 2 tandas, primero buscaremos 1 a 1 las palabras terminadas en un digito (las notas del 1 al 9), y reemplazaremos 1 a 1 excluyendo las otras cosas que podamos encontrar; y luego ya podremos de un sólo golpe reemplazar las notas del 10 al 95 ya que no se confunden con ninguna otra cosa.

La expresión de sustitución tendrá que incluir el código para convertir ese número en una nota dentro del texto. Así pues:

CLICK para CODEComo siempre, si pulsáis en la imagen accederéis al código. 
¡Ale-hop! y …
 Arreglado
es decir, donde antes ponía:

bajando la entena1.

ahora queda:

bajando la entena. <a title="[1]" href="#_ftn1" id="_ftnref1" name="_ftnref1"><span class="MsoPie">[1]</span></a>



Pero no hemos terminado ni mucho menos. Al final del libro nos quedan varias

Coco profesor

páginas con el texto aclaratorio de las notas (son 95) que tendremos que vincular a las notas situadas dentro del texto. El problema es que para cada nota, después de copiar-pegar el código tendríamos que realizar al menos 5 modificaciones (1 para cada vez que aparece el número de la nota); por lo que estamos hablando de casi ¡500 ediciones! No puede ser.
Nuestro amigo Coco, nos sugiere que hagamos algún invento que nos ahorre este trabajo tan tedioso.

CLICK para IMAGEN  
Lo primero va a ser copiar el texto de las notas a pie de libro en un archivo de texto plano TXT, de forma que cada nota ocupe una línea con su número de nota al inicio de la línea. Con un copiar-pegar y unos cuantos retornos de carro lo hacemos muy rápidamente:


Fichero de texto con las NOTAS
Y ahora vamos a crear un programita que mediante un bucle para los valores 1 a 95, lea la frase correspondiente con el texto de la nota, le añada el código necesario para convertirlo en una nota a pie de libro y escriba el resultado en otro archivo de texto.
 CLICK para CODE

Como siempre, si pulsáis en la imagen accederéis al código. 
Como soy un tío muy rarito el programa esta hecho en KIXTART, un dialecto BASIC interprete de MICROSOFT orientado al scripting para la gestión de sistemas pero convertirlo a algo más universal, como por ejemplo VISUAL BASIC es muy sencillo porque la sintaxis es muy similar.
Resumiendo:


Para n=1 a 95, leo el archivo con el texto de las notas frase a frase hasta que encuentro la línea con la nota número n; le quito el comienzo de la línea dónde está el número de la nota para dejar sólo el texto. A ese texto le añado delante el código necesario para que sea una nota a pie de libro, cuya parte variable es el número n de la nota. Escribo la frase resultante en otro archivo de texto, donde me quedaran al final 95 líneas, una para cada nota a pie de libro.
Este es el archivo DESTINO resultante:
CLICK para CODE Por último, solo queda hacer un copiar-pegar desde este archivo a nuestro e-book en ePUB y ¡Voilá!

CLICK para IMAGE

2 comentarios

  1. Muchas gracias, es un texto muy instructivo. Pero personalmente me queda una duda: ¿dónde aparecen finalmente las notas en el EPUB: a pie de página, o todas juntas al final? O dicho de otro modo: ¿es posible hacer que en un archivo EPUB las notas al pie aparezcan realmente al pie, tal como puede hacerse, por ejemplo, en un FB2?

    ResponderEliminar
  2. Las notas obligatoriamente al FINAL del libro es una de las "limitaciones" del #ePUB que no tiene una funcionalidad específica para situarlas en la misma página de forma sencilla. Podría quizá intentarse algo diseñandolo desde Adobe InDesign para leerlo en ADE.

    ResponderEliminar

© Cosas Interesantes