61

PDFtk を使用して PDF ファイルの最後のページを削除する方法を教えてください。

4

3 に答える 3

120

これによりoutfile.pdf、最後のページを除くすべてのページが作成されますinfile.pdf

pdftk infile.pdf cat 1-r2 output outfile.pdf

パラメータの説明

  • infile.pdf元のpdfファイルです
  • cat操作です
  • 1-r2はページ範囲です
    • ページ番号の前に文字 r を付けることで、逆の順序でページ番号を参照できます。たとえば、ページ r1 はドキュメントの最後のページ、r2 はドキュメントの最後から 2 番目のページ、rend はドキュメントの最初のページです。このプレフィックスは範囲内でも使用できます。たとえば、r3-r1 は PDF の最後の 3 ページです。

  • output特定のファイルに出力します
  • output.pdf出力pdfファイルです

その他の例はこちら: https://www.pdflabs.com/docs/pdftk-cli-examples/

于 2013-07-18T02:49:03.267 に答える
8

cpdfを使用すると、ドキュメントの先頭だけでなく、チルダを使用して、ドキュメントの末尾からの距離によってページを参照できます。

だから、私たちはできる

cpdf in.pdf 1-~2 -o out.pdf
于 2013-12-16T11:57:45.463 に答える
7

(AFAICT)pdftkでは「最後からのオフセット」を指定できないため、ページ数を調べてからこれをpdftk cat関数で使用する必要があります。

Poppler ( http://poppler.freedesktop.org/ )の 'pdfinfo' のようなツールでこれを提供できます。

これを少しの bash スクリプトでラップすると、このプロセスを簡単に自動化できます。

page_count=`pdfinfo "$INFILE" | grep 'Pages:' | awk '{print $2}'`
page_count=$(( $page_count - 1 ))
pdftk A="$INFILE" cat A1-$page_count output "$OUTFILE"

明らかに、パラメーターの追加、エラーチェック、およびその他のことも、上記のスクリプトに配置できます。

#! /bin/sh

### Path to the PDF Toolkit executable 'pdftk'
pdftk='/usr/bin/pdftk'
pdfinfo='/usr/bin/pdfinfo'


####################################################################
script=`basename "$0"`


### Script help
if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-?" ] || [ "$1" = "/?" ]; then
    echo "$script: <input-file.PDF> [<output-file.PDF>]"
    echo "    Removes the last page from the PDF, overwriting the source"
    echo "    if no output filename is given"
    exit 1
fi

### Check we have pdftk available
if [ ! -x "$pdftk" ] || [ ! -x "$pdfinfo" ]; then
    echo "$script: The PDF Toolkit and/or Poppler doesn't seem to be installed"
    echo "    (was looking for the [$pdftk] and [$pdfinfo] executables)"
    exit 2
fi

### Check our input is OK
INFILE="$1"
if [ ! -r "$INFILE" ]; then
    echo "$script: Failed to read [$INFILE]"
    exit 2
fi

OUTFILE="$2"
if [ "$OUTFILE" = "" ]; then
    echo "$script: Will overwrite [$INFILE] if processing is ok"
fi

timestamp=`date +"%Y%m%d-%H%M%S"`
tmpfile="/tmp/$script.$timestamp"

page_count=`$pdfinfo "$INFILE" | grep 'Pages:' | awk '{print $2}'`
page_count=$(( $page_count - 1 ))

### Do the deed!
$pdftk A="$INFILE" cat A1-$page_count output "$tmpfile"

### Was it good for you?
if [ $? -eq 0 ]; then
    echo "$script: PDF Toolkit says all is good"
    if [ "$OUTFILE" = "" ]; then
        echo "$script: Overwriting [$INFILE]"
        cp -f "$tmpfile" "$INFILE"
    else
        echo "$script: Creating [$OUTFILE]"
        cp -f "$tmpfile" "$OUTFILE"
    fi
fi


### Clean Up
if [ -f "$tmpfile" ]; then
    rm -f "$tmpfile"
fi
于 2013-10-06T22:00:20.813 に答える