Convertendo o djvu para o pdf E preservando o índice, como é possível?

8

Tentei várias ferramentas online e offline, mas as informações da tabela de conteúdo (TOC) não foram preservadas durante a conversão.

Eu gostaria de converter um dicionário finlandês de 5000 páginas que está no formato djvu e tem cerca de 5000 entradas de TOC estruturadas hierarquicamente para encontrar palavras rapidamente.

Alguma idéia de como é possível preservar as informações do TOC durante a conversão de DJVU para PDF?

    
por user1198559 23.08.2014 / 08:36

2 respostas

3

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 e filename.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.

por 15.05.2015 / 22:51
1

Baseado no esboço muito claro acima dado pelo usuário @pyrocrasty (obrigado!), eu implementei um conversor de DJVU para PDF que preserva tanto o texto OCR como a estrutura de bookmark. Você pode encontrá-lo aqui:

link

Reconhecimentos para os dados do OCR vão para @zetah nos fóruns do Ubuntu!

    
por 25.05.2015 / 18:27