Como duplico páginas em arquivos PDF automaticamente?


10

Eu tenho muitos arquivos PDF com 1 a 4 páginas cada. Preciso de uma solução que gere automaticamente um novo arquivo para cada um desses arquivos. Os novos arquivos devem conter o conteúdo dos arquivos originais duas vezes (ou seja, páginas 1 até o final, seguidas pelas mesmas páginas na mesma ordem novamente).

Como eu faço isso?


3
Esclareça que não podemos ler sua mente. Qual conta? Deseja gerar um novo arquivo pdf que contenha todas as páginas do original duas vezes? Em que ordem? Deseja a página 1a seguida pela página 1b ou deseja todas as 4 páginas primeiro e depois as quatro páginas novamente? Qual sistema operacional você está usando? Qual ferramenta você usa para criar os PDFs?
Terdon #

Respostas:


15

Solução para Windows usando PDFtk (que você parece estar usando de acordo com suas tags):

Isso resultará em um PDF com as páginas 1 final e 1 final novamente:

pdftk in.pdf cat 1-end 1-end output out.pdf

Se você deseja que cada página seja duplicada juntas (como em 1,1,2,2, ...), use o seguinte arquivo em lotes:

@echo off
set pages=
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('pdftk in.pdf dump_data ^| find /i "NumberOfPages"') do for /l %%b in (1,1,%%a) do set pages=!pages! %%b %%b
pdftk in.pdf cat!pages! output out.pdf

Muito obrigado: "pdftk in.pdf cat 1-end 1-end output out.pdf" faz exatamente o que eu preciso. A única coisa que falta é um loop que pega todos os arquivos pdf de um diretório e cria todos os novos arquivos. Muito obrigado por me ajudar novamente. Eu vou ser grato e convidar minha esposa para um jantar com o tempo economizado ;-)))
Marc

@ Marc: O loop é facilmente alcançado. Basta ir ao diretório com os PDFs e, no tipo de prompt de comando for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa". Para cada in.pdf (o nome pode ser qualquer coisa), isso resultará em um correspondente em (duplicado) .pdf . Aproveite o seu jantar e não se esqueça de aceitar a resposta (clique na marca de seleção verde à esquerda), se ela o ajudou!
Karan

infinete graças a você - você salvou minha vida! Sou muito muito grato por sua ajuda!
Marc

2

Eu poderia lhe dar uma solução melhor se você responder às perguntas no meu comentário, mas pelo bem de sua esposa, aqui estão algumas sugestões.

ImageMagick é uma ferramenta de linha de comando multiplataforma para manipulação de imagens. Depois de instalá-lo, você poderá usar sua convertferramenta para fazer o que quiser. Os detalhes dependem do seu sistema operacional. Suponho que você queira duas cópias do arquivo inteiro, e não cada página dobrada.

  1. Linux / OSX / Unix etc

    for n in *pdf; do convert -density 150 "$n" "$n" "$n"; done
    

    Isso substituirá os arquivos existentes . Você pode fazer backup primeiro.

  2. Janelas. Isso pode estar um pouco errado, eu não uso o Windows, então não posso testá-lo, mas a ideia geral deve ser algo como isto

    for %f in (*.pdf) do (convert.exe %f %f %f)
    

Seu forloop está ausente donee $nprovavelmente deve ser citado. Talvez eu esteja sentindo falta de como convertfunciona, mas o que convertfaz quando você passa três vezes o mesmo arquivo? Não posso testá-lo agora.
Slhck 28/05

Obrigado @slhck, você está certo em ambos os aspectos, como de costume. O formato geral de conversão é convert infile1 infile2 ... infileN outfile. Portanto, se você passar o mesmo arquivo três vezes, ele receberá o dobro da entrada e gravará no mesmo arquivo que a saída. Essa eu fiz teste :).
Terdon #

Oh, legal, então eu aprendi algo assim :)
slhck

Parece bom para mim. Muito obrigado. O comentário acima: Eu dei a essa a primeira tentativa e funcionou perfeitamente, apenas o loop correto pelo qual ainda estou buscando ... você poderia me ajudar novamente? Muito obrigado antecipadamente!
Marc

@ Marc desculpe, não tenho certeza do que você quer dizer. Qual comentário? Qual loop? As janelas ou o bash?
Terdon #

2

Se você deseja que cada página seja duplicada (como em 1,1,2,2, ...) no Linux, este script fará isso:

#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2  | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT=`basename ${INPUTFILE} .pdf`.dup.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT}

0

Se você tiver o pdftk não instalado, mas poppler-utils, use este comando:

for f in *
do
    pdfjoin $f $f
done

Isso é especialmente relevante no Fedora 21, onde o pdftk não está mais disponível no repositório.


0

Uso simples pdfunite. Provavelmente isso pode ser ainda mais simplificado com mais conhecimento sobre scripts.

Esteja ciente de que o último argumento é o arquivo resultante . Se você esquecer isso, esse arquivo será substituído.

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.