web-dev-qa-db-ja.com

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

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

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

10
Marc

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

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

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
15
Karan

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

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)
    
2
terdon

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}
2
Seegras

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

for f in *
do
    pdfjoin $f $f
done

これは、pdftkがリポジトリで利用できなくなったFedora21に特に関係があります。

0
Constantin

簡単な使用法pdfunite。これはおそらく、スクリプトの知識が増えるとさらに単純化できます。

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

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