この記事について
Linux (Ubuntu22.04)上でPDFファイルを編集するソフト・コマンドの私的な健忘録です。
他の方々にも役立つ情報があれば幸いです。
PDF閲覧
evince
ですね。
PDFのページ順序を入れ替える、回転、削除、マージなど
pdfarranger
GUIでやりたいときは、pdfarranger
。
パッケージ名もpdfarranger。
インストール方法:
sudo apt install pdfarranger
使い方はGUIなので迷わないだろう。
使用上の注意点としては、ver.1.4.2のpdfarrangerで編集すると、しおり(bookmark, outline)がきれいさっぱり消去されてしまった。しおりを使っているPDFには使用禁止。
pdftk
CUI(コマンドライン)でやりたいときは、pdftk
。
パッケージ名はpdftkなので、下記のようにインストールすれば良い。ただし細かいことを言うと、これはtransitional packageであり、本体はpdftk-javaらしい。
sudo apt install pdftk
なお、上記のパッケージでインストールされるpdftkは、下記のPDFLabsのものとは異なるみたい。
PDFLabs版pdftk:
https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
使い方については他の人の記事を参照されたい。
pdftkは、しおりを編集することもできる。
参考URL:
https://reject.tokyo/pdf-index/
使用例のメモ:
shuffle: 2つのPDF(infile1.pdfとinfile2.pdf)を交互に結合する。
pdftk A=infile1.pdf B=infile2.pdf shuffle A B output outfile.pdf
shuffle: 2つのPDF(infile1.pdfとinfile2.pdf)を交互に結合する。ただし、infile2.pdfの方だけ逆順にする。
両面書類を片面ずつ2回に分けてスキャンした後に結合するときに便利。
pdftk A=infile1.pdf B=infile2.pdf shuffle A Bend-1 output outfile.pdf
Bについているend-1
が逆順の指定。
両面書類を片面ずつ2回に分けてスキャンするさい、奇数ページは正順でスキャンされるが、その後に書類を裏返して、偶数ページをスキャンすると、偶数ページは逆順でスキャンされる。そのようなとき、上記のコマンドで結合すると、本来のページ順になる。
PDFを1ページごとにばらばらのPDFファイルに分割する。
pdftk input.pdf burst output page-%02d.pdf
%02d
は、1桁の数には0をつけて2桁の数字にする指定。%03d
なら3桁の数字になる。
PDFの一部を切り出す(トリミングする)
krop
GUIでやりたいときは、krop
。
パッケージ名もkrop。
インストール方法:
sudo apt install krop
使い方はGUIなので迷わないだろう。
pdfcrop, pdfjam
CUI(コマンドライン)でやりたいときは、pdfcrop
やpdfjam
。
これらは、texlive-extra-utilsパッケージをインストールするとその中に入っている。
TeXLive一式をインストールしてある人は、すでに入っていると思う。
シェルスクリプトなどでバッチ処理をするときに役立つかもしれない。
pdfjam
はトリミングに加えて、ページの結合・分割・割付もできる。
PDF中の注釈(コメント)をflattenする
注釈(コメント)の付いたPDFをLaTeXの図に取り込んだ(includegraphics)とき、その注釈(コメント)が表示されない。PDF中の注釈を表示するかしないかはアプリによるので、おそらくこれはLaTeXの仕様なのだろう。
解決策としては、注釈(コメント)という属性をなくして、ベタ書きに変換してしまえばよい。flatten(フラット化)するというらしい。qpdfコマンドでやるのが簡単。
パッケージ名もqpdf。
インストール方法:
sudo apt install qpdf
コマンド記述例: 脚注付きのinput.pdfをflattenして、output-flattened.pdfを生成する。
qpdf --flatten-annotations=all input.pdf output-flattened.pdf
注: pdftkにもflattenの機能があるが、これは別物。PDF中の注釈ではなく、PDF中の入力フォームをflattenするための機能らしい。
qpdfでも入力フォームのflattenはできるので、pdftkでやる必要はないが、参考までにコマンド記述を下記に示す。
コマンド記述例: 入力フォーム付きのinput.pdfをflattenして、output-flattened.pdfを生成する。
pdftk input.pdf output output-flattened.pdf flatten
PDFとSVGの相互変換
PDFの図をMicrosoft PowerPointで使いたいときがある。
PowerPointはPDF形式のファイルを図として扱えないが、SVGに変換すれば扱える。
PNGやJPGなどのイメージグラフィックスに変換するという手もあるが、元のPDFがベクタグラフィックスの場合は、SVGの方が比較的小さいファイルサイズで高品位の図になるので、お勧め。
PDF→SVGへ変換
pdf2svg
というコマンドで変換できる。
パッケージ名もpdf2svg。
インストール方法:
sudo apt install pdf2svg
使用例: foo.pdfを変換してfoo.svgにしたいとき
pdf2svg foo.pdf foo.svg
SVG→PDFへ変換
inkscapeをコマンドラインで使って変換できる。
インストール方法は、拙作の記事を参照:
https://qiita.com/j0306043/items/5666e67bcbfd099be7d5#inkscape
下記はVer.1.1のinkscapeの場合で説明する。
(古いバージョンのinkscapeとはオプションの指定が異なるので注意)
使用例: foo.svgを変換してfoo.pdfにしたいとき
inkscape -p foo.svg -o foo.pdf
convert
で変換するよりも、フォント絡みの再現性が良い感じ。