Como eu duplico páginas em arquivos PDF automaticamente?

8

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

Como faço isso?

    
por Marc 28.05.2013 / 17:27

5 respostas

14

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 seguido por 1 fim novamente:

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

Se você quiser que cada página seja duplicada (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
    
por 28.05.2013 / 18:05
2

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

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

  1. Linux / OSX / Unix etc

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

    Isto irá sobrescrever os arquivos existentes , você pode querer fazer o backup primeiro.

  2. Windows. Isso pode ser um pouco errado, eu não uso o Windows, então não posso testá-lo, mas a idéia geral deve ser algo como isso

    for %f in (*.pdf) do (convert.exe %f %f %f)
    
por 28.05.2013 / 18:05
2

Se você quiser que cada página seja duplicada (como em 1,1,2,2, ...) no Linux, esse 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}
    
por 07.08.2015 / 11:51
0

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

for f in *
do
    pdfjoin $f $f
done

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

    
por 17.01.2015 / 01:19
0

Uso simples pdfunite . Isso provavelmente pode ser ainda mais simplificado com mais conhecimento de script.

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

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
    
por 29.10.2015 / 19:42