kobapan@wiLiki
Login
Linux

Linux:pdftk・pdfをコマンドラインで編集

目次

pdftk

 $ sudo apt-get install pdftk

画像ファイルからPDFを作る。

テキストファイルをPDFにするときは、ps2pdfを使う。 PDFを画像ファイルにするときは、ImageMagick(convert)を使う。 PDFから画像を抜き出すときは、pdfimagesを使う。

使い方

単純な結合

b.pdf a.pdf の順番に結合(cat)して、new.pdf を生成
  $ pdftk b.pdf a.pdf cat output new.pdf

挿入

a.pdf の3ページ目に b.pdf を挿入して new.pdf を作成
  $ pdftk A=a.pdf B=b.pdf cat A1-2 B A3-end output new.pdf
複数のPDFファイルのページを指定して結合する
  $ pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf

ページの削除

3ページ目を飛ばしてoutput.pdfを生成
  $ pdftk pdf_original.pdf cat 1-2 4-end output output.pdf

抽出

src.pdf の 5から6ページを抽出して new.pdf を作成
  $ pdftk src.pdf cat 5-6 output new.pdf
5,11,20ページのみ抽出
  $ pdftk src.pdf cat 5 11 20 output new.pdf

回転

全てのページを90°回転
  $ pdftk src.pdf cat 1-endeast output new.pdf
はじめのページを90度回転
  $ pdftk in.pdf cat 1E 2-end output out.pdf

抽出と回転を同時に

5から25ページの奇数ページを抽出し、270°回転(oddは奇数ページ,evenは偶数ページ)
  $ pdftk src.pdf cat 5-25oddW output new.pdf
奇数ページを180度回転(shuffleは,ページを交互に配置しながら結合)
  $ pdftk A=src.pdf shuffle AoddS Aeven output new.pdf

並べ替え

結合する順番を入れ替える
  $ pdftk A=src1.pdf B=src2.pdf cat B A output new.pdf
ページを逆順に並べ替え
  $ pdftk src.pdf cat end-1 output new.pdf
2ページ目と3ページ目を入れ替えてoutput.pdfを生成
  $ pdftk pdf_original.pdf cat 1 3 2 4-end output output.pdf

分割

ページ毎に分割
  $ pdftk src.pdf burst
ページ毎に分割(出力ファイル名を指定)
  $ pdftk src.pdf burst output new_%02d.pdf
 
 output page_%02d.pdf => page_01.pdf, page_02.pdf, ...
 output %04d.pdf => 0001.pdf, 0002.pdf, ...

ページ回転のオプション

 - N north : 0°
 - S south : 180°
 - E east : 90°
 - W west : 270°
 - L left : -90°
 - R right : +90°
 - D down : +180°

ページの指定方法

 1-end (はじめから最後までのページ。つまりデフォルト)
 1-6 (1~6ページ)
 6-1 (1~6ページを逆順で)
 4 (4ページ目だけ)
 5 11 20 (5ページ、11ページ、20ページ)
 1-6even (偶数ページの取得 → 2 4 6)
 1-6odd (奇数ページの取得 → 1 3 5)
 ファイルが複数ある場合は、A1-end とか B5-11 とかになる。
 A1-end B1-end の場合は、cat だけ書けばよい。

入力ファイル名の指定

1. スペースで区切って複数指定

  $ pdftk src1.pdf src2.pdf 操作 output new.pdf

2. ファイル名にハンドルを付けて指定

 スペースで区切って複数のファイルを指定した場合,指定した順番に操作が実行される。 但し,ハンドルを付けることでこの順番を入れ替えたり出来る。
  $ pdftk A=src1.pdf B=src2.pdf 操作 output new.pdf
 例) src2.pdfを180度回転させて、src1.pdfと結合
  $ pdftk A=src1.pdf B=src2.pdf cat A BS output new.pdf

3. ワイルドカードの指定

  $ pdftk *.pdf 操作 output new.pdf
  $ pdftk input_00??.pdf 操作 output 出力ファイル名

PDFのメタ情報を編集・削除する方法

メタ情報の抜き出し

    $ pdftk in.pdf dump_data > meta.txt

メタ情報ファイル を編集する

    InfoKey: メタ情報の項目
    InfoValue: 項目の情報

メタ情報ファイル.txt の内容を PDF に適用して変換する

    $ pdftk in.pdf update_info meta.txt output out.pdf

qpdf

 $ sudo apt install qpdf

pdftk で "unknown.encryption.type.r" エラーが出る場合qpdfを使うと解決するかも。

pdfファイルの連結

 $ qpdf EPSON001.PDF --pages EPSON001.PDF EPSON002.PDF EPSON003.PDF -- Eall.pdf

qpdf "熱管理計算法(3版1953)_菅原菅雄_1.pdf" --pages "熱管理計算法(3版1953)_菅原菅雄_1.pdf" "熱管理計算法(3版1953)_菅原菅雄_2.pdf" -- "熱管理計算法(3版1953)_菅原菅雄.pdf"

--pages と -- の間に書かれたファイルがその順で連結されて最後の引数のファイルが生成される。最初の引数(ここではEPSON001.PDF)は、ページデータ以外の情報(Creator, Producer, CreationDate, PDF versionなど)をそのファイルから引き継ぐことを意味する。連結するファイル以外を指定しても受け入れられる。引き継ぎたくない場合はファイル名の代わりに --empty と入れておく。

 $ qpdf --empty --pages EPSON001.PDF EPSON002.PDF EPSON003.PDF -- Eall.pdf

ワイルドカードを使うと連番通りに連結する

 $ qpdf --empty --pages EPSON*.PDF -- Eall.pdf

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
LaTeX
GitHub

More ...