atualização: user3124688 codificou este processo em o script dpsprep .
Não conheço nenhuma ferramenta que faça a conversão para você. Você certamente deve ser capaz de fazer isso, 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 seu gerenciador de pacotes (GNU / Linux) ou em seus sites (Windows, OS X).
-
etapa 1: converta o texto do arquivo
Primeiro, use qualquer ferramenta para converter o arquivo DJVU em um PDF (sem marcadores).
Suponha que os arquivos sejam chamados de
filename.djvu
efilename.pdf
. -
etapa 2: extrair o contorno do DJVU
Em seguida, envie os dados da estrutura de tópicos do DJVU para um arquivo, da seguinte forma:
djvused "filename.djvu" -e 'print-outline' > bmarks.out
Este é um arquivo que lista os marcadores de documentos DJVU em um formato de árvore serializado. 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" ...))
-
passo 3: converta o contorno do DJVU para o formato de metadados PDF
Agora, precisamos converter esses marcadores no formato exigido pelos metadados do PDF. Este arquivo tem formato:
file ::= <entry>* entry ::= BookmarkBegin BookmarkTitle: <title> BookmarkLevel: <number> BookmarkPageNumber: <number> title ::= <character>*
Nosso exemplo seria:
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 SEXPR, mantendo o controle do nível, e gerar o nome, o número da página e o nível de cada entrada, no formato correto.
-
etapa 4: extrair metadados PDF e mesclar os marcadores convertidos
Depois de obter a lista convertida, envie os metadados em PDF a partir do 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 como
pdfmetadata.in
-
etapa 5: criar PDF com marcadores
Agora podemos criar um novo arquivo PDF com 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.