PDF

Portable Document Formatの略。
印刷時の再現性が高い状態で文書を交換できるファイル形式。

QPDF

PDFを編集したり人間可読化したりできるコマンドラインツール。
QPDF - TeX Wikiを参照。

インストール

公式サイトの指示に従う。

頻繁にアップデートされて新機能が追加されるため、(Linuxディストリビューションのリポジトリのものを使うのではなく)ソースからビルドして最新版を使うとよいかもしれない。

ふつうの*nixな環境では、ビルドは

$ tar xzf qpdf-9.1.0.tar.gz
$ cd qpdf-9.1.0
$ ./configure
$ make
$ make check #任意
$ sudo make install

という標準的な方法でできる。

ドキュメント

オンラインで最新版のマニュアルを読みたいならQPDF Manual を参照(PDF版もある)。

現在インストールされているバージョンのマニュアルをオフラインで読みたいなら、

を参照(この場所は man qpdf に書かれている)。

PDFのパスワードを解除

$ qpdf in.pdf --decrypt --password=hoge out.pdf

PDFを結合

複数のPDFファイルを並べたものを1つのPDFファイルとして保存するには、次のようにする。

$ qpdf in1.pdf --pages in1.pdf in2.pdf in3.pdf -- out.pdf

最初に指定したin1.pdfは、「メタ情報をin1.pdfから引き継ぐ」という意味をもつ。これを引き継ぎたくない場合は、代わりに

$ qpdf --empty --pages in1.pdf in2.pdf in3.pdf -- out.pdf

とすればよい。

片面ADFでスキャンしたPDFを結合

Brotherの家庭用プリンターにはADF(自動原稿送り装置)がついているものがあるが、機種によっては両面を同時に読み込むことができない(例えば私の持っているDCP-J957N)。

この片面のADFで両面原稿を(2回に分けて)読み込むと

の2つができる。これを正しい順番で結合したい。

初等的な方法

これをQPDFで行うには、前者をodd.pdf、後者をeven.pdfとしたとき、もしそれぞれ2ページなら

$ qpdf --empty --pages odd.pdf 1 even.pdf 2 odd.pdf 2 even.pdf 1 -- out.pdf

とすればよい。これで結合結果がout.pdfとして吐かれる。

これをページ数に関係なく行うPerlスクリプトは以下の通り。

#!/usr/bin/env perl
use strict;
use warnings;
use 5.014;
use utf8;
use open ':encoding(UTF-8)';
use Encode::Locale;
binmode(STDIN, ":encoding(console_in)");
binmode(STDOUT, ":encoding(console_out)");
binmode(STDERR, ":encoding(console_out)");
Encode::Locale::decode_argv;

my $odd = "odd.pdf";
my $even = "even.pdf";

# ページ数を取得
my $npages = `qpdf --show-npages $odd`;
chomp $npages;

# 結合
my $args = '';
for my $i (1..$npages){
    my $ri = $npages - $i + 1;
    $args .= "$odd $i ";
    $args .= "$even $ri ";
}
system("qpdf --empty --pages $args -- out.pdf")

collateを使う方法(バージョン8.3以降)

これはよくあるシチュエーションなのか、バージョン8.3で--collateオプションが追加された。これを使うと上記スクリプトと同様の処理が次のように1行で書ける。

$ qpdf --collate --empty --pages odd.pdf 1-z even.pdf z-1 -- out.pdf

ページに背景を追加する(バージョン8.4以降)

--underlayオプションを使うとPDFに背景を追加できる。

「複数ページのPDF文書(main.pdf)のすべてのページに、ロゴなどの入った背景PDF(background.pdf)の1ページ目を背景として追加する」という最も単純な例は次のようになる。

$ qpdf main.pdf --underlay background.pdf --repeat=1 -- out.pdf

ページを回転させる

全ページを右に90度回転させるには次のようにする。

$ qpdf in.pdf --rotate=+90 -- out.pdf

最終更新: 2019-11-29 20:14:34 +0900

[Top]

This page is generated by sinanoki.