Fancy fusión de PDFs

1

Tengo 6 archivos PDF que son el resultado de dividir varias presentaciones en PDF (que tenían 6 diapositivas en cada página). Básicamente, ahora tengo las páginas de arriba a la izquierda de todas las presentaciones en un archivo, arriba a la derecha en otro, a la izquierda en un archivo y así sucesivamente ...

Así es básicamente como se veía cada presentación inicial:

page 1
 ___________________
|  ______   ______  |
| |slide1| |slide2| |
| |______| |______| |
|  ______   ______  |
| |slide3| |slide4| |
| |______| |______| |
|  ______   ______  |
| |slide5| |slide6| |
| |______| |______| |
|___________________|

page 2
 ___________________
|  ______   ______  |
| |slide7| |slide8| |
| |______| |______| |
.....................

P: ¿Cómo puedo combinarlos para mantener el orden de las presentaciones iniciales?

Tengo que hacer lo siguiente:

for index in range(number_of_pages_in_each_pdf):
   final_pdf.append(pdf1[index])
   final_pdf.append(pdf2[index])
   final_pdf.append(pdf3[index])
   final_pdf.append(pdf4[index])
   final_pdf.append(pdf5[index])
   final_pdf.append(pdf6[index])

Hay alrededor de cien páginas en cada uno de esos seis archivos PDF, por lo que reorientar a mano está fuera de discusión .

    
pregunta Dart Dega 26.01.2017 - 14:46

1 respuesta

0

Finalmente, respondo a mi propia pregunta, porque finalmente encontré un camino y quiero dejar la solución completa aquí, en caso de que alguien tenga problemas con un problema similar en el futuro.

La solución involucra un increíble programa llamado Poppler disponible a través de Homebrew , por brew install poppler . Poppler viene con una variedad de herramientas de gestión de pdf, como pdfseparate y pdfunite incluidas en el script.

Sin más dilación, aquí está el script que escribí:

#!/bin/bash

mkdir ~/Desktop/merging

# number of pdf files containing pages nr 1/2/3/...
n=6

for i in $(seq 1 $n); do
    # ${i}.pdf being a file containing pages nr i
    pdfseparate ~/Desktop/${i}.pdf ~/Desktop/merging/${i}_%d.pdf
done

number_of_pages=$(cd ~/Desktop/merging/; ls | wc -l)
number_of_pages_each=$((number_of_pages/n))

command="pdfunite"

for i in $(seq 1 ${number_of_pages_each}); do
    for j in $(seq 1 $n); do
        command="$command ~/Desktop/merging/${j}_${i}.pdf"
    done
done

command="$command ~/Desktop/output.pdf"

eval $command

# cleanup
rm -rf ~/Desktop/merging
    
respondido por el Dart Dega 31.01.2017 - 20:38

Lea otras preguntas en las etiquetas