web-dev-qa-db-ja.com

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

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

編集:GhostScriptを使用して1ページだけを抽出することに成功しました。それをバッチ処理し、ファイルのリストを取得して使用する方法を調べています。

18
Tim Alexander

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が必要ではないことに気づきましたが、1つPDFそれらをすべて組み合わせたものです。上記を実行するだけで500が残ります1ページのPDF。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でもおそらく同じです。

両方を1つのステップで実行する方法はあるかもしれませんが、私は今それを理解するのが面倒です。

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

30
frabjous

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

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

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

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

2
vivek_ganesan

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

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

幸運を!!

トルファ

1
Trufa

Linuxの場合

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

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

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

これにはpdftktreeが必要であり、Ubuntu Linuxではaptを使用してインストールできます。

Sudo apt install pdftk tree
0

windowsバッチファイルコマンド(.bat)と同様(%%はbatファイル内の変数用)

解像度/サイズを縮小したjpgとしてのPDFの最初のページの抽出

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
ebricca

または cpdfhttps://www.coherentpdf.com/ocaml-libraries.html を使用します:

cpdf -merge in1.pdf [<range>] in2.pdf [<range>] [<more names/ranges>]
     [-retain-numbering] [-remove-duplicate-fonts] -o out.pdf

cpdf -merge a.pdf 1 b.pdf 1 -o out.pdf
0
Jerry T