Como preservar os favoritos ao reorganizar as páginas de um arquivo PDF com ferramentas como o pdftk?


12

Estou usando pdftkpara reorganizar as páginas de um arquivo PDF com marcadores / contornos, mas depois disso, o arquivo de saída perdeu os marcadores do original.

Meu comando é pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

Eu queria saber como eu poderia manter os marcadores enquanto reorganizava as páginas?

Respostas:


9

Aqui está uma solução funcional. No entanto, você precisará ajustá-lo para atender às suas necessidades.

No meu exemplo, removi a primeira página de um PDF e precisei atualizar os indicadores para apontar para os locais corretos.

  1. remova a página 1 do arquivo in.pdf:

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. crie um arquivo in.info a partir de in.pdf:

    pdftk in.pdf dump_data > in.info
    
  3. O in.info precisa ser corrigido no meu caso, pois removerei uma página.

    Assim, preciso diminuir o BookmarkPageNumber em um para que os indicadores levem às páginas corretas.

    código php:

    $file = "in.info";
    $data = file_get_contents($file);
    
    foreach (explode("\n", $data) as $row) {
        $tmp = explode(": ", $row);
    
        if ($tmp[0] == "BookmarkPageNumber") {
            if ($tmp[1] != "1") $tmp[1]--;
            echo $tmp[0].": ".$tmp[1]."\n";
        } else {
            echo $row."\n";
        }
    }
    
  4. create final out.pdf:

    pdftk temp.pdf update_info in2.info output out.pdf
    

testado trabalhando no debian usando o pdftk 2.01


1
Trabalhou para mim também. Talvez você possa adicionar uma dica sobre como executar seu script (não faz ideia de como ...) ou adicionar um script python:#!/usr/bin/python output = open('res.info','w') with open('temp.info','r') as f: for line in f: if line.startswith("BookmarkPageNumber"): output.write( "BookmarkPageNumber: "+ str(int(line.split()[1])+1)+"\n") else: output.write(line)
Vser

6

Você precisa fazer pdftk in.pdf dump_data > in.info, em seguida, adicione o update_infoparâmetro ao gerar o out.pdf. Citação de man pdftk:

update_info <info data filename | - | PROMPT>

Altera os metadados armazenados no dicionário de informações de um único PDF para corresponder ao arquivo de dados de entrada. O arquivo de dados de entrada usa a mesma sintaxe que a saída de dump_data. Caracteres não ASCII devem ser codificados como entidades numéricas XML. Isso não altera os metadados armazenados no fluxo XMP do PDF, se houver um. Por exemplo:

             pdftk in.pdf update_info in.info output out.pdf

  update_info_utf8 <info data filename | - | PROMPT>

O mesmo que update_info, exceto que a entrada é codificada como UTF-8.


Obrigado! Como obtenho esse arquivo "in.info"?
Tim

@ Tim: editado. Espero que esteja claro agora. Você precisa usar dump_data_utf8para update_info_utf8trabalhar, é claro.
Philomath

3
Obrigado! Ainda não funciona. Meus comandos estão em três etapas: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdfe pdftk out.pdf update_info in.info output out1.pdfAinda não há favoritos no out1.pdf. `
Tim

@ Tim, posso confirmar que isso realmente não funciona. Você encontrou alguma solução para isso por acaso?
Glutanimate

1
Minha pesquisa superficial no Google sugere que os favoritos não são manipulados.
vonbrand

5

Lendo a página de manual com cuidado, ele diz que update_infoaceita dados em qualquer formato dump_datagerado. Presumivelmente, isso teria que ser ajustado de acordo com a página aleatória. Não parece impossível , mas automático não é.

O site PDFtk fornece apenas o resultado acima e a criação / edição de marcadores como resultados. Todo o Google sabe sobre a questão dos marcadores em PDF e da reorganização, são hits nas operações acima e exposições líricas sobre as maravilhas que eles oferecem, e este tópico ;-).

Então parece que não pode ser feito. Os comentários sugerem algumas possibilidades, que não funcionaram quando tentadas.


1

"pdfmod" é uma ferramenta gráfica simples que permite remover uma ou páginas de modo de um PDF existente. É apenas uma questão de alguns cliques. Ele também preserva as informações do conteúdo e a reticulação no pdf.

O "pdftk" funciona bem e eu o uso há muito tempo, mas perdia o conteúdo depois de remover uma ou duas páginas do pdf. Os arquivos pdf testados em "pdftk" e "pdfmod" são criados no openoffice.

https://apps.fedoraproject.org/packages/pdfmod


pdfmodparece melhor do que pdftkquando se trata de preservar metadados. Um diff de exiftoolsaída mostra que pdfmodpreserva os metadados, mas pdftknão preserva tudo, mesmo se você usar dump_data_utf8& update_info_utf8.
user1338062
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.