
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
pdftk
comando y alimentarlassalida estándara un segundopdftk
comando 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 A
la shuffle A B
última dominio.
Aquí elJava (re-)implementación depdftk
, el que está empaquetado en distribuciones recientes.