Mac (Catalina) にXpdfをインストールして日本語対応

MacにXpdfをインストールする方法を調べたのでまとめました。

PDFの扱いを勉強している中でMacで`pdffonts`コマンドを使う必要が出てきたため、`pdffonts`を含むパッケージのXpdfのインストール方法を調べました。新しい情報でうまくまとまったものがありませんでしたので、この記事を読んで皆さまがスムーズにXpdfのインストールできることを願います。

## 環境
* macOS Catalina 10.15.15
* パッケージマネージャー Homebrew


## Xpdfのインストール
Homebrewを使います。

```bash
brew install xpdf
```

依存パッケージが多いようで少し時間がかかりました。最近は```brew install```すると自動で```update```してくれてますね。
## 日本語の表示

### 言語パッケージをダウンロード
さっそくコマンドを試してみます。日本語を含むファイルで試してみます。

```bash
> cd ~/testDir
> pdffonts test.pdf

Syntax Error: Unknown character collection 'Adobe-Japan1'
```

エラーが出てしまいます。日本語を表示するためにはLanguage support packageをダウンロードしてくる必要があるようです。

[Download Xpdf and XpdfReader](http://www.foolabs.com/xpdf/download.html)のからJapaneseのパッケージをダウンロードします。
<img width="590" alt="スクリーンショット 2020-07-27 17.50.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335949/9afb6f23-4430-9f58-076c-26c34067e528.png">

```/usr/local/share/xpdf/japanese``` ディレクトリを作成します。
先ほどダウンロードしたJapaneseのパッケージを解凍して、中身を ```/usr/local/share/xpdf/japanese``` に移します。
これだけではまだ日本語表示できません。設定ファイルを作る必要があります。

### 設定ファイルを作る

```~/.pdfrc``` ファイルを作ります（自分はこのファイル名を```.pdffrc```としていてハマりました）。このファイルに先ほど解凍した中にあるテキストファイル```add-to-xpdfrc```の内容を追加します。また```textEncoding UTF-8```も書き加えます。

```text:~/.pdfrc
textEncoding UTF-8

#----- begin Japanese support package (2011-sep-02)
cidToUnicode	Adobe-Japan1	/usr/local/share/xpdf/japanese/Adobe-Japan1.cidToUnicode
unicodeMap	ISO-2022-JP	/usr/local/share/xpdf/japanese/ISO-2022-JP.unicodeMap
unicodeMap	EUC-JP		/usr/local/share/xpdf/japanese/EUC-JP.unicodeMap
unicodeMap	Shift-JIS	/usr/local/share/xpdf/japanese/Shift-JIS.unicodeMap
cMapDir		Adobe-Japan1	/usr/local/share/xpdf/japanese/CMap
toUnicodeDir			/usr/local/share/xpdf/japanese/CMap
#fontFileCC	Adobe-Japan1	/usr/..../NotoSansCJKjp-Regular.otf
#----- end Japanese support package
```

他にもオプションが必要であれば[xpdfrc](https://www.xpdfreader.com/xpdfrc-man.html)を参考にしましょう。これで日本語を含むPDFを扱えるようになりました。たとえばフォント情報を見ると次のようになります。

```bash
> pdffonts example.pdf

name                                           type              emb sub uni prob object ID
---------------------------------------- ----------------- --- --- --- ---- ---------
IMEOLT+Century                           TrueType          yes yes no            8  0
FJHSNS+HiraMinPro-W3                     CID Type 0C       yes yes no            9  0
UBNOQH+PalatinoLinotype-Italic           TrueType          yes yes yes          11  0
```

参考リンク

- [pdfにフォントが埋め込まれてるか確認するコマンドpdffonts - ととろぐ！臨時増刊号](http://ototorosama.hatenablog.com/entry/2013/02/14/055355)
- [xpdfを使ってPDFから日本語抽出 | akkunchoi@github](http://akkunchoi.github.io/xpdf-japanese.html)

## ハマったところ

### 言語パッケージをどこに置くのか

Homebrewでインストールしたから```/usr/local/Cellar/xpdf```以下に言語パッケージを置く必要があるのかなと迷走しました。結論としてはどちらでも良いが、```/usr/local/share```に置く方がちょいとベターだと考えています。根拠はHomebrewで管理しているものに手を加えるのはよくないかもしれないからです。

### 設定ファイルの場所

調べた範囲では設定ファイルを```/usr/local/etc/xpdfrc```とするサイトばかりでした（日本語では）。ただ公式[xpdfrc](https://www.xpdfreader.com/xpdfrc-man.html)を読んでみると

> All of the Xpdf tools read a single configuration file. If you have a .xpdfrc file in your home directory, it will be read. Otherwise, a system-wide configuration file will be read from /usr/local/etc/xpdfrc, if it exists. (This is its default location; depending on build options, it may be placed elsewhere.) 

要約すると

- ```~/.xpdfrc``` があれば読み込む。こちらはユーザーごとの設定。
- なければ```/usr/local/etc/xpdfrc```を読み込む。こちらはシステム全体の設定。

個人的にはユーザーごとに設定を変える可能性を考えるので、```~/.xpdfrc```を設定ファイルとしました。

以上、しょーもないハマったところでした。