No conozco ninguna herramienta que haga la conversión por ti. Ciertamente deberías poder hacerlo, pero puede tomar un poco de trabajo. Voy a describir el proceso básico. Necesitará las utilidades de línea de comandos de código abierto pdftk
y djvused
(parte de DjVuLibre). Estos están disponibles en su administrador de paquetes (GNU / Linux) o en sus sitios web (Windows, OS X).
Paso 1: convierte el texto del archivo
Primero, use cualquier herramienta para convertir el archivo DJVU a PDF (sin marcadores).
Supongamos que los archivos se llaman filename.djvu
y filename.pdf
.
Paso 2: extraer el contorno de DJVU
A continuación, envíe los datos del esquema DJVU a un archivo, como este:
djvused "filename.djvu" -e 'print-outline' > bmarks.out
Este es un archivo que enumera los marcadores de documentos DJVU en un formato de árbol serializado. De hecho, es solo un SEXPR , y se puede analizar fácilmente. El formato es el siguiente:
file ::= (bookmarks
<bookmark>*)
bookmark ::= (name
page
<bookmark>*)
name ::= "<character>*"
page ::= "#<digit>+"
Por ejemplo:
(bookmarks
("bmark1"
"#1")
("bmark2"
"#5"
("bmark2subbmark1"
"#6")
("bmark2subbmark2"
"#7"))
("bmark3"
"#9"
...))
Paso 3: convierte el esquema DJVU al formato de metadatos PDF
Ahora, necesitamos convertir estos marcadores al formato requerido por los metadatos PDF. Este archivo tiene formato:
file ::= <entry>*
entry ::= BookmarkBegin
BookmarkTitle: <title>
BookmarkLevel: <number>
BookmarkPageNumber: <number>
title ::= <character>*
Entonces nuestro ejemplo sería:
BookmarkBegin
BookmarkTitle: bmark1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: bmark2
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle: bmark2subbmark1
BookmarkLevel: 2
BookmarkPageNumber: 6
BookmarkBegin
BookmarkTitle: bmark2subbmark2
BookmarkLevel: 2
BookmarkPageNumber: 7
BookmarkBegin
BookmarkTitle: bmark3
BookmarkLevel: 1
BookmarkPageNumber: 9
Básicamente, solo necesita escribir un script para recorrer el árbol SEXPR, realizar un seguimiento del nivel y generar el nombre, el número de página y el nivel de cada entrada a la que llega, en el formato correcto.
Paso 4: extraer metadatos PDF y empalmar en marcadores convertidos
Una vez que tenga la lista convertida, envíe los metadatos PDF de su archivo PDF convertido:
pdftk "filename.pdf" dump_data > pdfmetadata.out
Ahora, abra el archivo y busque la línea que comienza:
NumberOfPages:
inserte los marcadores convertidos después de esta línea. Guarde el nuevo archivo comopdfmetadata.in
Paso 5: crea un PDF con marcadores
Ahora podemos crear un nuevo archivo PDF que incorpore estos metadatos:
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
El archivo out.pdf
debe ser una copia de su PDF con los marcadores importados del archivo DJVU.
j.split('#')[1]
con(int(re.findall(r'\d+', j.split('#')[1])[0])+1)
y funcionó muy bien. Debian Jessie necesitaba:sudo apt-get install pdftk djvulibre-bin python-pip ruby ruby-dev libmagickwand-dev; sudo pip install sexpdata; sudo gem install iconv pdfbeads