PDFの束の最後のページを抽出および/または削除する方法


14

ベンダーの1つが、それらから取得したPDFの最後のページに不必要に大きな画像を追加し始めました。これを削除する必要があります。ただし、これらは何百もあるため、手動で入力することは禁止されています。PDFの最後のページを自動的に抽出して削除する最良の方法は何ですか(最初に1つ、次にもう1つ、画像のないものを削除していないことをファイルサイズで確認する必要があります)?OSはLinuxです。

ghostscriptを使用して、の行に沿って何かを抽出できますが、gs -dFirstPage=5 -dLastPage=5これを自動化する必要があります。最後のページの番号を調べて手動で調べることはできません。

何か案は?

編集:明確にするために、最後のページを分割/削除したいだけです。その中の画像ではなく、最後のページ期間を切り取ります。


1
見てくださいpdftk—私は、この種の仕事のために一般的に働くように作られることができると確信しています。
ダニエルアンダーソン

重複の可能性:Unix:PDFを画像に変換
13

2
リモートでそれの複製ではありません。
アンドリュー

ただし、最後のページの画像を削除することに興味はありません。最後のページ、期間を削除することに興味があります。
アンドリュー

1
UbuntuのASK上の複数の異なる答えと関連質問:askubuntu.com/questions/221962/...
TuringTux

回答:


2

@Daniel Anderssonがすでにコメントしているように、これは簡単に行うことができますpdftk

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

私はそれがpdftkへの1回の呼び出しで行うことができるかどうかわかりません...

編集:thanoskの答えとそれを組み合わせて使用​​することができます(bashで):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

最後のページを既に変数に抽出したとき$last


例は機能しません。より良く機能する@Sid Stewardの答えを見つけました。
-Reado

14

@elderingの答えをさらに改善するために、pdftkバージョン1.45以降では、小文字のrをページ番号の前に付けることで、ページを逆順に参照する手段があります。PDFの最終ページはr1、最後から2番目のページはr2などです。

たとえば、単一のpdftk呼び出し:

pdftk input.pdf cat 1-r2 output output.pdf

input.pdfから最終ページをドロップします-入力は少なくとも2ページの長さでなければなりません。

ファイルサイズをテストするためにPDFの最終ページのみを抽出するには、次を実行します。

pdftk input.pdf cat r1 output final_page.pdf

PdftkはLinuxで利用可能です。多くのディストリビューションには、インストール可能なバイナリがあります。ただし、バージョン1.45以降であることを確認する必要があります。そうでない場合は、ソースコードからpdftkをビルドできます。


ラテックスベースのpdf生成システムは常にドキュメントの最初と最後に空のページを生成するため、rN-thingはまさに必要なものでした。最後に手動で削除する必要がありました。今、私は単に呼び出します:pdftk A = pocket20.pdf cat A3-r6 r3-end output pocket_to_print.pdfこれは、最初の2ページと最後の4、5ページを削除します。
マーティンT.

1

pdfinfoは実際のpdfファイルのサイズを提供し、pdfimagesは上記のpdfファイル内の画像のインデックスを提供します。したがって、次の形式でスクリプトを書くことができます

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

特定のファイルの最後のページに画像がある場合に返されます。もしそうなら、あなたがする必要があるどんな操作でもすることができます。


0

pdftkの代わりにpdfjamを使用するソリューションは次のとおりです。

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

最初の引数はトリミングするファイルで、2番目の引数はトリミングするページの量です(デフォルトは1)。


0

ワンライナーソリューションは、find一緒に使用することpdftkです:

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

:この例では、トリミングされたファイルは、入力ファイルの上書きを許可しないcutため、元のファイル名を保持するために呼び出されるサブディレクトリに保存されpdftkます。

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