マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

dvipdfmx: TeX ソース内での暗号化指定を試してみた

qa:55769 の角藤さんのアナウンス。

最新の dvipdfmx (および updvipdfmx) では、PDF パスワードなどを TeX ソースレベルで指定しておけるように、新しい special が導入されました。

(ちなみに、dvipdfmx の暗号化瀬鄭の機能はずっと昔から存在する。これまではコマンドラインオプションで指定していた。)

早速試してみる。以下は出力の PDF 文書を編集禁止にする設定。


\documentclass[a4paper]{article}
% 所有者パスワード(ownerpw)を「password」、暗号鍵ビット長(length)を 128、
% 許可する操作の設定(perm;ビットフィールド値)を 2580 にする。
\AtBeginDvi{\special{pdf:encrypt ownerpw (password) length 128 perm 2580}}
\begin{document}
READ ONLY!
\end{document}

生成された PDF を Adobe Reader で開いて「文書のプロパティ」の「セキュリティ」タブを開くと、確かに「印刷」「内容のコピー」「アクセシビリティのための内容の抽出」のみ「許可」になっていて残りは「許可しない」となっている。

この special は非常に有用だと思われる。ただ心配なことがあり、それは、この special が「LaTeX パッケージ」にならずにこのまま \spcieal 命令を書き連ねるという TIPS が拡散する……という流れである。((実際に、pdf:tounicode special 命令がそのような状況になってしまっている。その影響で、hyperref の新しい版に対応するために、LaTeX 文書での記述方法自体を修正しなければいけない事態に陥っている。))

ちなみに、pdfTeX には出力する PDF に暗号化を適用する機能はないようだ(試みられた時期もあるようだが…)。