PDFファイル内のページを自動的に複製するにはどうすればよいですか?


10

1〜4ページのPDFファイルがたくさんあります。これらのファイルごとに新しいファイルを自動的に生成するソリューションが必要です。新しいファイルには、元のファイルのコンテンツが2回含まれている必要があります(つまり、1ページ目から最後まで、同じページが同じ順序で続きます)。

どうすればこれを達成できますか?


3
明確にしてください、私たちはあなたの心を読むことができません。どんな請求書?オリジナルのすべてのページを2回含む新しいPDFファイルを生成しますか?どんな順番で?1aページに続いて1bページが必要ですか、それとも最初に4ページすべて、次に4ページすべてが必要ですか。どのオペレーティングシステムを使用していますか?PDFを作成するためにどのツールを使用しますか?
terdon 2013年

回答:


15

PDFtkを使用するWindowsのソリューション(タグに従って使用しているようです):

これにより、ページが1-endの後に1-endが再び続くPDFになります。

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

各ページを一緒に複製する場合(1,1,2,2、...など)、次のバッチファイルを使用します。

@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

どうもありがとうございました。「pdftk in.pdf cat 1-end 1-end output out.pdf」は、まさに私が必要としていることを行います。唯一足りないのは、ディレクトリからすべてのpdfファイルを取得してすべての新しいファイルを作成するループです。また私を助けてくれてありがとう。私は感謝し、時間を節約して私の妻を夕食に招待します;
Marc

@Marc:ループは簡単に実現できます。PDFがあるディレクトリに移動し、コマンドプロンプトでと入力しますfor %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa"。各in.pdf(名前は何でもかまいません)の場合、対応するin(Duplicated).pdfになります。夕食を楽しんでください。問題が解決した場合は、答えを受け入れることを忘れないでください(左側の緑色のチェックマークをクリックしてください)。
Karan

あなたに感謝します-あなたは私の命を救いました!私はあなたの助けにとても感謝しています!
マルク・

2

私のコメントで質問に答えるなら、私はあなたにもっと良い解決策を与えるかもしれませんが、あなたの妻のために、ここにいくつかの提案があります。

ImageMagickは、画像操作のためのクロスプラットフォームのコマンドラインツールです。インストールすると、そのconvertツールを使用して必要な操作を実行できるようになります。詳細は、オペレーティングシステムによって異なります。各ページを2重にするのではなく、ファイル全体の2つのコピーが必要だと思います。

  1. Linux / OSX / Unixなど

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

    これにより既存のファイルが上書きされます。最初にバックアップすることをお勧めします。

  2. ウィンドウズ。これは少し間違っている可能性があります。Windowsを使用していないのでテストできませんが、一般的な考え方は次のようになります

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

あなたのforループが不足しているdone$n、おそらく引用符で囲む必要があります。たぶん私はどのようにconvert動作するのか見当がつかないのですがconvert、同じファイルを3回渡すとどうなりますか 今はテストできません。
slhck 2013年

@slhckに感謝します。あなたはいつものように両方の点で正しいです。一般的な変換形式はconvert infile1 infile2 ... infileN outfileです。したがって、同じファイルを3回渡すと、入力として2回受け取り、出力として同じファイルに書き込みます。1私はやったテストを:)。
terdon 2013年

ああ、かっこいい、それから私も何かを学んだ:)
slhck

私にはいいですね。どうもありがとう。上記のコメント:私はその1つを最初に試してみましたが、それは完璧に機能しました。私がまだ調査している正しいループだけです...もう一度私を助けてもらえますか?よろしくお願いします!
2013年

@Marc申し訳ありませんが、どういう意味かわかりません。どのコメント?どのループ?窓かbashか?
terdon 2013年

2

Linuxで各ページを一緒に複製する場合(1、1、2、2など)、次のスクリプトはそれを行います。

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

pdftkがインストールされていないがpoppler-utilsがある場合は、次のコマンドを使用します。

for f in *
do
    pdfjoin $f $f
done

これは特に、Fedora 21に関連します。この場合、pdftkはリポジトリで使用できなくなります。


0

シンプルな使い方pdfunite。これは、スクリプトの知識が増えると、おそらくさらに簡略化できます。

最後の引数は結果のファイルであることに注意してください。それを忘れると、このファイルは上書きされます。

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.