複数のPDFから最初のページを抽出する


17

約500個のPDFを取得して、最初のページを抽出しました。その後、時間のかかる変換プロセスを実行する必要があるため、500個のpdfから最初のページのみを抽出して新しいpdfに配置するバッチプロセスを使用して、時間を節約することを試みました。Acrobatを調べましたが、複数のファイルに対してこれを行う実際の方法は見つかりません。これを達成できる他のプログラムや方法を知っている人はいますか?無料でオープンソースの方が明らかに有利です:)

編集:実際にGhostScriptを使用して1ページのみを抽出することに成功しました。現在、それをバッチ処理し、ファイルのリストを取得してそれらを使用する方法を検討しています。


変換プロセスの他のステップには何が関係しますか?
イグナシオバスケス-アブラムス

編集については、私の編集をご覧ください。
狂気

回答:


29

pdftkの使用...

MacおよびLinuxでは、コマンドラインから。

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

Windowsでは、バッチファイルを作成できます。メモ帳を開き、これを内部に貼り付けます。

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

「pdftk.exe」をpdftkなどのフルパスに置き換える必要がある場合があり"C:\Program Files\pdftk\pdftk.exeます。(私はWindowsを使用していないのでわかりません。)

.batで終わる拡張子を付けて保存し、PDFのあるフォルダーにドロップしてダブルクリックします。

はい、Ghostscriptでも同じことができます。

どれどれ。MacおよびLinux(すべて1行)の場合:

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Windowsバッチファイルに対応するコマンドが何であるかは正確にはわかりません。私の最善の推測(-私はウィンドウを持っていないのでテストできません-):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

ゴーストスクリプト実行可能ファイルへのパスが正しいことを再確認してください。また、Windowsを使用していないため、これをテストしていません。


編集:OK、たぶん500ページの1ページPDFが欲しいのではなく、それらすべてを結合した単一のPDFが欲しいと気づいた。上記を実行するだけで、1ページのPDFが500枚残ります。MacとLinuxでpdftk ...を使用してそれらを結合するには:

pdftk *-page1.pdf cat output combined.pdf

上記のようにpdftkへのフルパスが必要な場合を除き、Windowsでもおそらく同じだと思います。バッチファイルで上記の行の後にその行を追加するだけです。

MacおよびLinuxでGhostscriptを使用する場合:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

上記のように、先頭の「gs」をgswin32c.exeへのフルパスに置き換えることを除いて、Windowsでもおそらく同じです。

ゴーストスクリプトを使って両方を一度に実行する方法があるかもしれませんが、私は今それを理解するのが面倒です。

それらを組み合わせる順序が重要な場合は、さらに情報が必要になります。


それが私が探していたコマンドです。午後はLinuxのifループについて読んでいます!最初のコマンドは正しいコマンドです。つまり、500個の単一ページpdfが必要です。最初のすべてのページを1つのPDFにまとめることができましたが、Excelに変換すると管理できなくなります。私のユーザーには、非常に具体的なリクエストとレイアウトの要件があり、腹立たしいが挑戦的です。助けてくれてありがとう!!
ティムアレクサンダー

2

今日はLinuxでそれをしなければなりませんでした。Macでも動作するはずです。端末から次のコマンドを実行します。

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lprは、ジョブをプリンターに送信します。

コマンド内の*文字の使用に注意してください。これにより、ディレクトリ内のすべてのPDFファイルに対してコマンドが実行されます。


ご指摘のとおり、これによりジョブがプリンターに送信されます。それはOPが求めているものではありません。
ニックK9

1

pdf-forgeのようなpdf仮想プリンターを使用できると思います。

あなたは最初のページを「印刷」するだけで、私は今Macでそれを試すことはできませんが、一度にそれ以上のことができると確信しています。

幸運を!!

トルファ


それらのポインタに感謝します。これらはGhostScriptに私を導きました。GhostScriptは私が望むことをすることができるように見えます。ありがとう
ティムアレキサンダー

@ティムアレクサンダー、全く問題ありません!!
-Trufa

0

Windowsバッチファイルコマンド(.bat)の場合(%%はbatファイルの変数用)

解像度/サイズを削減したpdfのjpgとしての最初のページ抽出

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(上記の投稿でsOutputFileは間違って書かれていた..そして標準gs x86インストールの現在のパスで)

Ghostscriptを使用して複数ページのPDFを単一のJPGに変換する方法も参照し てください。


0

Linuxの場合

私はこのコマンドラインを書きました

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

しかし、それは仕事をします、私はそれをテストしました、それはあなたが持っているフォルダの多くのレベルでも動作します。フォルダー構造のルートで実行するようにしてください。すべてのフォルダーには、すべてのpdfファイルに対して、次で終わる追加のpdfがあります。.firstpage.pdf

これが必要でpdftkありtree、Ubuntu Linuxではaptでイ​​ンストールできます:

sudo apt install pdftk tree

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