PDF関係のネタを色々と書いてきて、 自分でもどこに何を書いたか良く分からなくなってきたので、 整理しておく。しばらく工事中となる。
1. PDF を読む (1) Preview
macOS 純正のビューワーである Preview が便利である。
2. PDF を読む (2) Skim
LATEX を使っていると、synctex という機能が使いたくなるが、 それは Preview ではサポートされていないので、 Skim というPDFビューワーを使う人が多いようである。
macOS の Preview も捨て難いので、 私は Preview/Skim の二重生活をしている。 (Skim には Preview の持っていない機能が色々あるらしいが、 私は synctex 機能くらいしか使っていない。)
3. pdftk -- PDF “編集” ツール
pdftk というソフトは、一言で説明しにくいが、 PDF ファイルに色々な編集が出来る。
ページごとに分割したり、その反対に結合したり。
“背景の追加” が有用な機能である。
pdftk doc1.pdf background doc2.pdf outout doc3.pdf(doc2.pdf を背景として、 doc1.pdf を重ねた doc3.pdf を出力する。) |
参考: 「pdftk を使ってみる」
4. スキャンしてPDFを作る
ScanSnap というスキャナーを使っている。 ScanSnap Home というソフトウェアが提供されている (ネットで入手できる)。 OCR機能が含まれているので、テキスト層付きの PDF が作れる。
5. OCR
学習・研究用には、検索が出来る出来ないは死活問題と言っても良いくらいなので、 OCRできることは重要である。
私は、ずっと以前は Adobe Acrobat を使って OCR していたが、 Adobe の商売のやり方が私の使い方とは合わないので、 最近はほとんどの場合に ScanSnap の OCR 機能に頼っている。
自分でスキャンして作ったPDFでない場合(ネットから入手した資料など)は、 ScanSnap の OCR 機能が使えないので、 Wondershare の PDFelement というのを利用している。
6. 栞 (document outline) の利用
論文やテキストなどは、目次を栞 (document outline) にしておくと、 PDF の使い勝手が大いに向上する。 紙媒体と違ってパラパラできないが、栞があれば紙媒体よりも便利かもしれない。
Preview, Skim はもちろん栞を表示できて、それをクリックしてジャンプ出来る。 WWWブラウザーでも PDF が読めることが多い。 Google Chrome と Mozilla Firefox では、栞もサポートされている (「Firefox で文書のアウトラインを表示」) が、 Safari は栞に対応していない (PDFファイルを Preview で開くように設定するしかないらしい)。
もちろん元祖 Adobe Acrobat には栞を作成・編集する機能があるが、 その機能を持つサードパーティ製のソフトウェアは意外と少ない。 個人的には Preview や Skim がサポートしてくれることを期待しているのだが…
ないものねだりをしても仕方ないので、 私は Wondershare の PDFelement や、Superace の UPDF というソフトを使っている。 どちらも私は (subscription ではなく) 買い切りでやっているので、 最新版を使っているのではないが、まあまあの使い勝手である。
最近は、ChatGPT に目次の栞化をしてもらっている (「PDFの目次の栞 (PDF document outline)」)。 鶏を割くに牛刀というようで少し気が引けるのだが…
7. PDFの “チェック”
OCRしてあるかどうか、poppler の pdftext を利用してチェックするスクリプト pdf-searchable を用意している。
curl -O https://m-katsurada.sakura.ne.jp/misc/20260820/pdf-searchable chmod +x pdf-searchable mv pdf-searchable $(SOMEWHERE) |
pdf-searchable *.pdf |
| poppler は MacPorts でイントールできる |
sudo port install poppler |
栞を作ってあるか、mupdf の mutool を利用してチェックするスクリプト pdf-bookmarked を用意している。
curl -O https://m-katsurada.sakura.ne.jp/misc/20260820/pdf-bookmarked chmod +x pdf-bookmarked mv pdf-bookmarked $(SOMEWHERE) |
pdf-bookmarked *.pdf |
| mupdf は MacPorts でイントールできる |
sudo port install mupdf |
この2つは同時に実行するのが良いかもしれない。
curl -O https://m-katsurada.sakura.ne.jp/misc/20260820/pdf-check chmod +x pdf-check mv pdf-check $(SOMEWHERE) |
PDFには、フォントを埋め込むことが強く推奨されるようになった。 どういうフォントを使っていて、埋め込みがされているかどうか、 poppler の pdffonts コマンドで調べることが出来る。
フォントの埋め込みし忘れているかどうか表示する、 check-pdf-fonts.sh というスクリプトを用意した。
curl -O https://m-katsurada.sakura.ne.jp/misc/20260905/check-pdf-fonts-v2.sh chmod +x check-pdf-fonts.sh mv check-pdf-fonts.sh $(SOMEWHERE) |
多くのソフトウェアで PDF 出力が出来るが、 最近は必要なフォントの埋め込みが出来るものが多いらしい。 あまり意識する必要はない、ということである。
ところで、これは個人的な事情というべきかもしれないが、 以前は LATEX で図を EPS (Encapsulated PostScript) 形式で作成することが多かった。 テキストが含まれている図を LATEX で取り込んでPDFを作る場合に、 フォントの埋め込みがされない場合がある。 今となっては EPS は時代遅れなので、 可能ならば図を PDF で作成し直すのが良いが、 それが出来ないならば、次善の策として、 Ghostscript で EPS → PDF 変換をして、 その際にフォントの埋め込みをする手がある。
gs -dSAFER -dBATCH -dNOPAUSE \
-sDEVICE=pdfwrite \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-sOutputFile=なんとか.pdf \
なんとか.eps
|
実はこれが正しく動くかどうかはケース・バイ・ケース (BoundingBox が狂っていたりすると、手動で微調整が必要になったりする) である。 自動化するダメ元スクリプトを作った。
curl -O https://m-katsurada.sakura.ne.jp/misc/20260905/ps2pdf-safe-v2.sh chmod +x ps2pdf-safe-v2.sh mv ps2pdf-safe-v2.sh $(SOMEWHERE) |
8. TEX とPDF
英語の世界では、かなり以前から、 .tex から .dvi でなく直接 .pdf を生成するのが普通になっているそうだが、 日本では移行が遅れて、 platex あるいは uplatex で .dvi にしてから、 dvipdfmx で .pdf にするという従来手順がまだ結構使われているのではないか (私がそうです)。
dvipdfmx -d 5 -O 2 なんとか.dvi |
日本でも、 lualatex を利用することで .pdf を生成する、というやり方に移行することになる、 と言われている。
「LaTeXクックブック: デザインの洗練・TikZによる可視化・LuaLaTeX活用」 という本が出たそうで、遅ればせながら、それを見て色々試してみるつもりである。
TEX に図を取り込む場合に、 ずっと以前は EPS 形式のデータを用意したが、 今では PDF や PNG, JPEG などでデータを用意することが多くなった。
| サンプル・プログラムをカレント・ディレクトリにコピーして試し実行 |
find /Applications/FreeFem++.app -name plotPDF-sample.edp -exec cp -p {} . \;
FreeFem++ plotPDF-sample.edp
|
ノウハウ: LATEX に PDF で作成した図を取り込むとき、 余白部分を取り去りたければ、 TeXLive に含まれている pdfcrop コマンドを用いると良い。
pdfcrop なんとか.pdf |
桂田 祐史