Come duplicare automaticamente le pagine nei file PDF?


10

Ho molti file PDF da 1 a 4 pagine ciascuno. Ho bisogno di una soluzione che generi automaticamente un nuovo file per ciascuno di questi file. I nuovi file dovrebbero contenere due volte il contenuto dei file originali (ovvero le pagine dalla 1 alla fine, seguite nuovamente dalle stesse pagine nello stesso ordine).

Come posso farlo?


3
Per favore, chiarisci, non possiamo leggere la tua mente. Quale fattura? Vuoi generare un nuovo file pdf che contenga due volte ogni pagina dell'originale? In quale ordine? Vuoi la pagina 1a seguita dalla pagina 1b o vuoi prima tutte e 4 le pagine e poi tutte e quattro le pagine? Quale sistema operativo stai usando? Quale strumento usi per creare i pdf?
terdon,

Risposte:


15

Soluzione per Windows utilizzando PDFtk (che sembra stia utilizzando secondo i tag):

Ciò comporterà un PDF con pagine 1-end seguite da 1-end di nuovo:

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

Se si desidera duplicare ogni pagina insieme (come in 1,1,2,2, ...), utilizzare il seguente file batch:

@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

Grazie mille: "pdftk in.pdf cat 1-end 1-end output out.pdf" fa esattamente quello che mi serve. L'unica cosa che manca è un ciclo che prende tutti i file pdf da una directory e crea tutti i nuovi file. Grazie mille per avermi aiutato di nuovo. Sarò grato e invito mia moglie a cena con il tempo risparmiato ;-)))
Marc

@Marc: il loop è facilmente raggiungibile. Basta andare alla directory con i PDF e al prompt dei comandi digitare for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa". Per ogni in.pdf (il nome può essere qualsiasi cosa), ciò comporterà un corrispondente .pdf (duplicato) . Goditi la cena e non dimenticare di accettare la risposta (fai clic sul segno di spunta verde a sinistra) se ti è stato di aiuto!
Karan,

grazie infinite a te - mi hai salvato la vita! Sono molto grato per il tuo aiuto!
Marc

2

Potrei darti una soluzione migliore se rispondi alle domande nel mio commento, ma per il bene di tua moglie, ecco un paio di suggerimenti.

ImageMagick è uno strumento da riga di comando multipiattaforma per la manipolazione delle immagini. Una volta installato, dovresti essere in grado di utilizzare il suo convertstrumento per fare ciò che desideri. I dettagli dipendono dal tuo sistema operativo. Presumo che tu voglia due copie dell'intero file, non ogni pagina raddoppiata.

  1. Linux / OSX / Unix ecc

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

    Questo sovrascriverà i file esistenti , potresti voler prima eseguire il backup.

  2. Finestre. Questo potrebbe essere leggermente sbagliato, non uso Windows quindi non posso provarlo, ma l'idea generale dovrebbe essere qualcosa del genere

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

Nel tuo forloop manca il donee $nprobabilmente dovrebbe essere citato. Forse mi manca il modo in cui convertfunziona, ma cosa succede convertquando passi tre volte lo stesso file? Non posso provarlo adesso.
slhck,

Grazie @slhck, hai ragione su entrambi i punti come al solito. Il formato di conversione generale è convert infile1 infile2 ... infileN outfile. Quindi, se lo passi lo stesso file tre volte, lo prenderà due volte come input e quindi scriverà nello stesso file dell'output. Quello che ho fatto test :).
terdon,

Oh, bello, allora ho imparato anche qualcosa :)
slhck,

Per me va bene. Molte grazie. Il commento sopra: ho dato a quello uno il primo tentativo e ha funzionato perfettamente, solo il ciclo giusto per cui sto ancora cercando ... potresti aiutarmi di nuovo? Molte grazie in anticipo!
Marc,

@Marc scusa, non sono sicuro di cosa intendi. Quale commento? Quale loop? Le finestre o quella bash?
terdon,

2

Se vuoi che ogni pagina sia duplicata insieme (come in 1,1,2,2, ...) su Linux, questo script lo farà:

#!/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 pdftk non è installato, ma poppler-utils, utilizzare questo comando:

for f in *
do
    pdfjoin $f $f
done

Ciò è particolarmente rilevante su Fedora 21, dove pdftk non è più disponibile nel repository.


0

Uso semplice pdfunite. Questo può probabilmente essere ulteriormente semplificato con una maggiore conoscenza degli script.

Tenere presente che l' ultimo argomento è il file risultante . Se lo dimentichi, questo file verrà sovrascritto.

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.