Fancy fusione di PDF

1

Ho 6 file PDF che sono il risultato della suddivisione di più presentazioni in PDF (che aveva 6 diapositive su ogni pagina). Quindi, in sostanza, ora ho le pagine in alto a sinistra di tutte le presentazioni in un file, in alto a destra in un altro, in un file di mezzo-sinistra e così via ...

Questo è praticamente il modo in cui ogni presentazione iniziale assomigliava a:

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

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

Q: Come posso unirli insieme per mantenere l'ordine delle presentazioni iniziali?

In genere devo fare quanto segue:

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])

Ci sono circa un centinaio di pagine in ognuno di questi sei PDF, quindi il risveglio a mano è fuori questione .

    
posta Dart Dega 26.01.2017 - 14:46
fonte

1 risposta

0

Alla fine, rispondo alla mia domanda, perché finalmente ho trovato un modo e voglio lasciare la soluzione completa qui, nel caso in cui qualcuno si scontrasse con un problema simile in futuro.

La soluzione include un fantastico programma chiamato Poppler disponibile attraverso Homebrew , di brew install poppler . Poppler è dotato di una varietà di strumenti di gestione pdf, come pdfseparate e pdfunite presenti nello script.

Senza ulteriori indugi, ecco lo script che ho scritto:

#!/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
    
risposta data 31.01.2017 - 20:38
fonte

Leggi altre domande sui tag