Não conheço nenhuma ferramenta que faça a conversão para você. Você certamente deve ser capaz de fazê-lo, mas pode demorar um pouco de trabalho. Vou descrever o processo básico. Você precisará dos utilitários de linha de comando de código aberto pdftk
e djvused
(parte do DjVuLibre). Estes estão disponíveis no gerenciador de pacotes (GNU / Linux) ou em seus sites (Windows, OS X).
etapa 1: converter o texto do arquivo
Primeiro, use qualquer ferramenta para converter o arquivo DJVU em PDF (sem marcadores).
Suponha que os arquivos sejam chamados filename.djvu
e filename.pdf
.
Etapa 2: extrair o esboço do DJVU
Em seguida, envie os dados do esboço do DJVU para um arquivo, como este:
djvused "filename.djvu" -e 'print-outline' > bmarks.out
Este é um arquivo que lista os indicadores de documentos do DJVU em formato de árvore serializada. Na verdade, é apenas um SEXPR e pode ser facilmente analisado. O formato é o seguinte:
file ::= (bookmarks
<bookmark>*)
bookmark ::= (name
page
<bookmark>*)
name ::= "<character>*"
page ::= "#<digit>+"
Por exemplo:
(bookmarks
("bmark1"
"#1")
("bmark2"
"#5"
("bmark2subbmark1"
"#6")
("bmark2subbmark2"
"#7"))
("bmark3"
"#9"
...))
Etapa 3: converter o esboço do DJVU para o formato de metadados PDF
Agora, precisamos converter esses indicadores no formato exigido pelos metadados do PDF. Este arquivo tem formato:
file ::= <entry>*
entry ::= BookmarkBegin
BookmarkTitle: <title>
BookmarkLevel: <number>
BookmarkPageNumber: <number>
title ::= <character>*
Portanto, nosso exemplo se tornaria:
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
Basicamente, você só precisa escrever um script para percorrer a árvore do SEXPR, mantendo o controle do nível e emitir o nome, número da página e nível de cada entrada, no formato correto.
etapa 4: extrair metadados do PDF e emendar nos marcadores convertidos
Depois de obter a lista convertida, produza os metadados PDF do seu arquivo PDF convertido:
pdftk "filename.pdf" dump_data > pdfmetadata.out
Agora, abra o arquivo e encontre a linha que começa:
NumberOfPages:
insira os marcadores convertidos após esta linha. Salve o novo arquivo comopdfmetadata.in
Etapa 5: criar PDF com marcadores
Agora podemos criar um novo arquivo PDF incorporando esses metadados:
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
O arquivo out.pdf
deve ser uma cópia do seu PDF com os favoritos importados do arquivo DJVU.
j.split('#')[1]
com(int(re.findall(r'\d+', j.split('#')[1])[0])+1)
e funcionou muito bem. Debian Jessie necessário:sudo apt-get install pdftk djvulibre-bin python-pip ruby ruby-dev libmagickwand-dev; sudo pip install sexpdata; sudo gem install iconv pdfbeads