Cree un archivo de salida pdf alternando páginas entre dos archivos

Cree un archivo de salida pdf alternando páginas entre dos archivos

Tengo un archivo pdf, llamémoslo A, compuesto por muchas páginas. Luego tengo un segundo archivo pdf, llamémoslo B, compuesto de una sola página.

Mi objetivo es tener un archivo de salida, llamémoslo O, con el siguiente patrón:

O[1] = A[1]
O[2] = B[1]
O[3] = A[2]
O[4] = B[1]
O[5] = A[3]
O[6] = B[1]
O[7] = A[4]
O[8] = B[1]
...

En otras palabras, quiero intercalar las páginas de A con la página B. Para darle un contexto, el archivo A contiene las diapositivas de un curso al que asistí, creé el archivo B con una sola página llena de líneas horizontales.

El archivo de salida resultante me permitirá colocar mis notas en el lado derecho de las diapositivas (ya que voy a imprimir dos páginas por hoja).

Puedo hacer esto importando cada página en LibreOffice, pero estoy buscando un script (¿quizás pdftk?) para ejecutarlo fácilmente en diferentes archivos.

Respuesta1

Se trata de cotejar páginas, aquí con B comoextraño/a la derechay A comoincluso/verso(dado el requisito exacto de OP), excepto que no hay suficientes páginas B disponibles: deberán duplicarse suficientes veces en una primera operación.

Si A páginas (por lo tantoverso) se ven a la izquierda de las páginas B, entonces debería haber un guardiaa la derechaprimera página: por ejemplo, una página B adicional.

  • cuenta el número de páginas en A. Digamos que hay 10 páginas.

    Eso significa que se necesitará una portada B adicional para un total de 10+1 = 11 (o como se ve a continuación, de 0 a 10). Si hay una manera de automatizar este recuento, se debe utilizar como valor superior para el bucle siguiente. No conozco esa manera.

  • generar suficientes páginas B (la página B1 única de B) en un bucle de shell para duplicarlas desde un primer pdftkcomando y alimentarlassalida estándara un segundo pdftkcomando que utilizaráentrada estándarpara la parte B y los clasificará a lo largo de A.

    pdftk B=B.pdf cat $(for page in $(seq 0 10); do echo B1; done) output - | pdftk A=A.pdf B=- shuffle B A output O.pdf
    

    o la misma división en una forma más legible:

    pdftk B=B.pdf \
          cat $(for page in $(seq 0 10); do echo B1; done) \
          output - | \
    pdftk A=A.pdf \
          B=- \
          shuffle B A \
          output O.pdf
    

    Nota: si eso no quedó claro, una vez que se desenrolla el bucle del shell, esto se resuelve en:

    pdftk B=B.pdf cat B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 output - | pdftk A=A.pdf B=- shuffle B A output O.pdf
    

Si el orden de las páginas se invierte entre A y B (para comenzar a imprimir con una página A, en lugar de una página B), probablemente genere una página menos en B (la última página B probablemente no sea necesaria) y cambie a shuffle B Ala shuffle A Búltima dominio.

Aquí elJava (re-)implementación depdftk, el que está empaquetado en distribuciones recientes.

información relacionada