PDF dosyaları içindeki sayfaları otomatik olarak nasıl çoğaltırım?


10

Her biri 1 ila 4 sayfa içeren çok sayıda PDF dosyam var. Bu dosyaların her biri için otomatik olarak yeni bir dosya üreten bir çözüme ihtiyacım var. Yeni dosyalar, orijinal dosyaların içeriğini iki kez içermelidir (örn. Sayfa 1'den sonuna kadar, ardından aynı sayfaları tekrar aynı sırada).

Bunu nasıl başarabilirim?


3
Lütfen açıklığa kavuşturun, aklınızı okuyamayız. Ne faturası? Orijinalin her sayfasını iki kez içeren yeni bir pdf dosyası mı oluşturmak istiyorsunuz? Hangi sırayla? Önce sayfa 1a, ardından sayfa 1b istiyor musunuz, yoksa önce 4 sayfanın hepsini sonra da dört sayfanın tümünü mi istiyorsunuz? Hangi İşletim sistemini kullanıyorsunuz? PDF'leri oluşturmak için hangi aracı kullanıyorsunuz?
terdon

Yanıtlar:


15

PDFtk kullanan Windows için çözüm (etiketlerinize göre kullanıyorsunuz):

Bu, sayfalar 1 ve sonra tekrar 1 uçlu bir PDF ile sonuçlanır:

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

Her sayfanın birlikte kopyalanmasını istiyorsanız (1,1,2,2, ... gibi), aşağıdaki toplu iş dosyasını kullanın:

@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

Çok teşekkürler: "pdftk in.pdf cat 1-end 1-end output out.pdf" tam olarak ihtiyacım olanı yapıyor. Eksik olan tek şey, bir dizindeki tüm pdf dosyalarını alan ve tüm yeni dosyaları oluşturan bir döngüdür. Bana tekrar yardım etmek için çok teşekkürler. Minnettar olacağım ve eşimi kurtarılan zamanla bir akşam yemeğine davet edeceğim ;-)))
Marc

@Marc: Döngü kolayca elde edilir. Sadece PDF'lerle dizine gidin ve komut istemi yazın for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa". Her bir in.pdf için (ad herhangi bir şey olabilir), bu (Çoğaltılmış) .pdf'ye karşılık gelir . Akşam yemeğinin tadını çıkarın ve size yardımcı olursa cevabı kabul etmeyi unutmayın (soldaki yeşil onay işaretine tıklayın)!
Karan

sana sonsuz teşekkürler - hayatımı kurtardın! Yardımınız için çok minnettarım!
Marc

2

Yorumumdaki sorulara cevap verirseniz size daha iyi bir çözüm verebilirim, ancak eşiniz için, birkaç öneri.

ImageMagick , görüntü işleme için platformlar arası bir komut satırı aracıdır. Yükledikten sonra, istediğiniz convertşeyi yapmak için aracını kullanabilmeniz gerekir . Ayrıntılar işletim sisteminize bağlıdır. Tüm dosyanın iki kopyasını istediğinizi varsayıyorum, her sayfa iki katına çıkmadı.

  1. Linux / OSX / Unix vb.

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

    Bu, varolan dosyaların üzerine yazacaktır, önce yedeklemek isteyebilirsiniz.

  2. Pencereler. Bu biraz yanlış olabilir, Windows'u kullanmıyorum, bu yüzden test edemiyorum ama genel fikir böyle bir şey olmalı

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

Kişisel fordöngü eksik doneve $nmuhtemelen tırnak içine alınmalıdır. Belki nasıl convertçalışıyorum eksik , ama convertaynı dosyayı üç kez geçtiğinizde ne yapar ? Şu anda test edemiyorum.
slhck

Teşekkürler @slhck, her zamanki gibi her iki konuda haklısın. Genel dönüştürme biçimi convert infile1 infile2 ... infileN outfile. Yani, aynı dosyayı üç kez iletirseniz, girdi olarak iki kez alır ve çıktı ile aynı dosyaya yazar. Bir That I did testi :).
terdon

Oh, güzel, o zaman ben de bir şey öğrendim :)
slhck 28:30 '

Bana uyar. Çok teşekkürler. Yukarıdaki yorum: İlk denemeyi yaptım ve mükemmel çalıştı, sadece doğru döngü için hala seraching ediyorum .... bana tekrar yardımcı olabilir misiniz? Şimdiden çok teşekkürler!
Marc

@Marc üzgünüm, ne demek istediğinden emin değilim. Hangi yorum? Hangi döngü? Pencereler mi yoksa bash mı?
terdon

2

Her sayfanın Linux'ta birlikte kopyalanmasını istiyorsanız (1,1,2,2, ... gibi), bu komut dosyası bunu yapacaktır:

#!/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

Yüklü pdftk, ancak poppler-utils varsa, bu komutu kullanın:

for f in *
do
    pdfjoin $f $f
done

Bu özellikle pdftk'nin depoda artık bulunmadığı Fedora 21 için geçerlidir.


0

Basit kullanım pdfunite. Bu muhtemelen daha fazla komut dosyası bilgisi ile daha da basitleştirilebilir.

Unutmayın son argüman Oluşan dosyasıdır . Bunu unutursanız, bu dosyanın üzerine yazılacaktır.

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

0

Pdftk yüklü Linux'ta 4 sayfalık bir pdf (1,1,2,2,3,3,4,4) sayfalarını çoğaltmak için bu giriş benim için bir C kabuk betiğinde çalıştı:

pdftk output.pdf cat 1 1 2 2 3 3 4 4 output out.pdf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.