¿Cómo conservar los marcadores al reorganizar páginas de un archivo PDF con herramientas como pdftk?

12

Estoy usando pdftkpara reorganizar las páginas de un archivo pdf con marcadores / contornos, pero después de eso, el archivo de salida perdió los marcadores del original.

Este es mi mandamiento pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

Me preguntaba cómo podría mantener los marcadores mientras reorganizo las páginas.

Tim
fuente

Respuestas:

10

Aquí hay una solución de trabajo. Sin embargo, deberá ajustarlo para que se ajuste a sus necesidades.

En mi ejemplo, eliminé la primera página de un PDF y luego tuve que actualizar los marcadores para señalar las ubicaciones correctas.

  1. eliminar la página 1 de in.pdf:

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. cree un archivo in.info desde in.pdf:

    pdftk in.pdf dump_data > in.info
    
  3. in.info necesita ser corregido en mi caso, ya que eliminaré una página.

    Por lo tanto, necesito disminuir BookmarkPageNumber en uno para que los marcadores conduzcan a las páginas correctas.

    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. crear final out.pdf:

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

Probado trabajando en Debian usando pdftk 2.01

Martin Olika
fuente
1
A mí también me funcionó. Tal vez podría agregar una pista sobre cómo ejecutar su script (no #!/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)
tengo
6

Debe hacerlo pdftk in.pdf dump_data > in.info, luego agregue el update_infoparámetro al generar el out.pdf. Citando de man pdftk:

update_info <info data filename | - | PROMPT>

Cambia los metadatos almacenados en el diccionario de información de un solo PDF para que coincida con el archivo de datos de entrada. El archivo de datos de entrada usa la misma sintaxis que la salida de dump_data. Los caracteres no ASCII deben codificarse como entidades numéricas XML. Esto no cambia los metadatos almacenados en la secuencia XMP del PDF, si tiene uno. Por ejemplo:

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

  update_info_utf8 <info data filename | - | PROMPT>

Igual que update_info, excepto que la entrada está codificada como UTF-8.

Philomath
fuente
¡Gracias! ¿Cómo debo obtener este archivo "in.info"?
Tim
@Tim: editado. Espero que esté claro ahora. Necesitas usar dump_data_utf8para update_info_utf8trabajar, por supuesto.
Philomath
3
¡Gracias! Aún no funciona. Mis órdenes son en tres pasos: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdfy pdftk out.pdf update_info in.info output out1.pdfTodavía no hay marcadores en out1.pdf. `
Tim
@Tim Puedo confirmar que esto realmente no funciona. ¿Ha encontrado alguna solución a esto por casualidad?
Glutanimate
1
Mi búsqueda en Google superficial sugiere que los marcadores no se manejan en absoluto.
vonbrand
5

Al leer la página del manual con cuidado, dice que update_infotoma datos en cualquier formato que dump_datagenere. Eso presumiblemente tendría que ajustarse de acuerdo con el cambio de página. No suena imposible , pero automático no lo es.

El sitio PDFtk solo da el resultado anterior y crea / edita marcadores como resultados. Todo lo que Google sabe sobre el tema de los marcadores en PDF y la reorganización, son las visitas a las operaciones anteriores y las exposiciones líricas sobre las maravillas que ofrecen, y este hilo ;-).

Entonces parece que no se puede hacer. Los comentarios sugieren algunas posibilidades, que no funcionaron cuando se intentó.

vonbrand
fuente
1

"pdfmod" es una herramienta gráfica simple que permite eliminar una o páginas de modo de un PDF existente. Es solo cuestión de unos pocos clics. También conserva la información del contenido y la reticulación en el pdf.

"pdftk" funciona bien y lo estaba usando durante mucho tiempo, pero solía perder contenido después de eliminar una o dos páginas del pdf. Los archivos pdf que se prueban en "pdftk" y "pdfmod" se crean desde openoffice.

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

abhijit
fuente
pdfmodparece mejor que pdftkcuando se trata de preservar metadatos. Una diferencia de exiftoolsalida muestra que pdfmodconserva los metadatos, pero pdftkno conserva todo, incluso si usa dump_data_utf8& update_info_utf8.
user1338062