Crie um arquivo de saída PDF alternando páginas entre dois arquivos

Crie um arquivo de saída PDF alternando páginas entre dois arquivos

Tenho um arquivo pdf, vamos chamá-lo de A, composto por várias páginas. Então eu tenho um segundo arquivo pdf, vamos chamá-lo de B, composto por uma única página.

Meu objetivo é ter um arquivo de saída, vamos chamá-lo de O, com o seguinte padrão:

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

Em outras palavras, quero intercalar as páginas de A com a página B. Para dar uma ideia, o arquivo A contém os slides de um curso que participei, criei o arquivo B com uma única página preenchida por linhas horizontais.

O arquivo de saída resultante me permitirá colocar minhas anotações no lado direito dos slides (já que imprimirei duas páginas por folha).

Consigo fazer isso importando todas as páginas do LibreOffice, mas estou procurando um script (talvez pdftk?) Para executar facilmente em arquivos diferentes.

Responder1

Trata-se de agrupar páginas, aqui com B comochance/retoe A comoaté/verso(dado o requisito exato do OP), exceto que não há páginas B suficientes disponíveis: elas terão que ser duplicadas várias vezes em uma primeira operação.

Se páginas A (portantoverso) devem ser vistos à esquerda das páginas B, então deve haver um guardaretoprimeira página: por exemplo, uma página B adicional.

  • conte o número de páginas em A. Digamos que haja 10 páginas.

    Isso significa que uma primeira página B adicional será necessária para um total de 10+1 = 11 (ou como visto abaixo de 0 a 10). Se houver uma maneira de automatizar essa contagem, ela deverá ser usada como o valor superior do loop abaixo. Eu não sei desse jeito.

  • gerar páginas B suficientes (página exclusiva B1 de B) em um loop de shell para duplicar a partir de um primeiro pdftkcomando e alimentá-lassaída padrãopara um segundo pdftkcomando que usarástdinpara a parte B e irá agrupá-los ao longo 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
    

    ou a mesma divisão de uma forma mais legível:

    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: se isso não estiver claro, depois que o loop do shell for desenrolado, isso será resolvido em:

    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
    

Se a ordem das páginas for invertida entre A e B (para começar a imprimir com uma página A, em vez de uma página B), provavelmente gere uma página a menos em B (a última página B provavelmente não seria necessária) e mude shuffle B Apara shuffle A Ba última comando.

Aqui o(re)implementação java depdftk, aquele empacotado em distribuições recentes, foi usado.

informação relacionada