Bagaimana cara menduplikasi halaman dalam file PDF secara otomatis?

10

Saya memiliki banyak file PDF dengan 1 hingga 4 halaman. Saya memerlukan solusi yang secara otomatis menghasilkan file baru untuk masing-masing file ini. File baru harus berisi konten file asli dua kali (yaitu halaman 1 hingga akhir, diikuti oleh halaman yang sama dalam urutan yang sama lagi).

Bagaimana saya mencapai ini?

Marc
sumber
3
Tolong jelaskan, kami tidak dapat membaca pikiran Anda. RUU apa? Anda ingin membuat file pdf baru yang berisi setiap halaman asli dua kali? Dalam urutan apa? Apakah Anda ingin halaman 1a diikuti oleh halaman 1b atau Anda ingin semua 4 halaman pertama dan kemudian keempat halaman lagi? Sistem Operasi apa yang Anda gunakan? Alat apa yang Anda gunakan untuk membuat pdf?
terdon

Jawaban:

15

Solusi untuk Windows menggunakan PDFtk (yang tampaknya Anda gunakan sesuai tag Anda):

Ini akan menghasilkan PDF dengan halaman 1-akhir diikuti oleh 1-ujung lagi:

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

Jika Anda ingin setiap halaman digandakan bersama (seperti dalam 1,1,2,2, ...), gunakan file batch berikut:

@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
Karan
sumber
Terima kasih banyak: "pdftk in.pdf cat 1-end 1-end output out.pdf" persis apa yang saya butuhkan. Satu-satunya hal yang hilang adalah loop yang mengambil semua file pdf dari direktori dan membuat semua file baru. Banyak tx untuk membantu saya lagi. Saya akan berterima kasih dan mengundang istri saya untuk makan malam dengan waktu yang dihemat ;-)))
Marc
@ Markc: Loop mudah dicapai. Cukup buka direktori dengan PDF dan pada tipe prompt perintah for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa". Untuk setiap in.pdf (nama dapat berupa apa saja), ini akan menghasilkan korespondensi dalam (Duplicated) .pdf . Nikmati makan malam Anda dan jangan lupa untuk menerima jawabannya (klik tanda centang hijau di sebelah kiri) jika itu membantu Anda!
Karan
terima kasih tak terhingga kepada Anda - Anda telah menyelamatkan hidup saya! Saya sangat berterima kasih atas bantuan Anda!
Marc
2

Saya mungkin memberi Anda solusi yang lebih baik jika Anda menjawab pertanyaan dalam komentar saya tetapi demi istri Anda, berikut adalah beberapa saran.

ImageMagick adalah alat baris perintah lintas platform untuk manipulasi gambar. Setelah Anda menginstalnya, Anda harus dapat menggunakan convertalatnya untuk melakukan apa yang Anda inginkan. Rinciannya tergantung pada sistem operasi Anda. Saya berasumsi Anda ingin dua salinan dari seluruh file, tidak setiap halaman berlipat ganda.

  1. Linux / OSX / Unix dll

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

    Ini akan menimpa file yang ada , Anda mungkin ingin membuat cadangan terlebih dahulu.

  2. Windows. Ini mungkin sedikit salah, saya tidak menggunakan Windows jadi saya tidak bisa mengujinya tetapi ide umumnya harus seperti ini

    for %f in (*.pdf) do (convert.exe %f %f %f)
    
terdon
sumber
forLingkaran Anda tidak ada donedan $nmungkin harus dikutip. Mungkin saya kehilangan cara convertkerjanya, tetapi apa fungsinya convertketika Anda melewatkan tiga kali file yang sama? Saya tidak bisa mengujinya sekarang.
slhck
Terima kasih @slhck, Anda benar dalam kedua hal seperti biasa. Format konversi umum adalah convert infile1 infile2 ... infileN outfile. Jadi, jika Anda mengopernya file yang sama tiga kali, itu akan mengambilnya dua kali sebagai input dan kemudian menulis ke file yang sama sebagai output. Itu yang saya lakukan tes :).
terdon
Oh, keren, kalau begitu aku juga belajar sesuatu :)
slhck
Terdengar bagus untukku. Terima kasih banyak. Komentar di atas: Saya memberikan yang pertama mencoba dan itu bekerja dengan sempurna, hanya loop yang tepat saya masih seraching untuk .... bisakah Anda membantu saya lagi? Banyak terima kasih sebelumnya!
Marc
@ Marc maaf, saya tidak yakin apa yang Anda maksud. Komentar yang mana? Lingkaran yang mana? Jendela atau yang bash?
terdon
2

Jika Anda ingin setiap halaman digandakan bersama (seperti dalam 1,1,2,2, ...) di Linux, skrip ini akan melakukannya:

#!/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}
Seegras
sumber
0

Jika pdftk Anda belum diinstal, tetapi poppler-utils, maka gunakan perintah ini:

for f in *
do
    pdfjoin $f $f
done

Ini sangat relevan pada Fedora 21, di mana pdftk tidak tersedia lagi di repositori.

Konstantin
sumber
0

Penggunaan sederhana pdfunite. Ini mungkin dapat lebih disederhanakan dengan lebih banyak pengetahuan scripting.

Sadarilah bahwa argumen terakhir adalah file yang dihasilkan . Jika Anda lupa itu maka file ini akan ditimpa.

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
keiki
sumber