
画像のみならず、PDFのメタ情報も操作出来る exiftool 、印刷時に不必要なメタ情報を削除するのによく使うのですが、 Microsoft Print To PDF で生成されたPDFがエラーで消せない事態に遭遇。そしてUbuntu 18.04でサポートされている exiftool はだいぶ古いことから、ソースから最新版をインストールしてみました。
昨今のオフィス用複合プリンタはプリントジョブ履歴を記録するのに、プリントファイル名のみならずこうしたメタ情報も収集しています。ワードやエクセルで書類を作っている時には全く気にしていませんが、複製・編集と使い回されたファイルに残るオリジナルの作成者情報など、本来の趣旨から逸脱したメタ情報を放置しておくことはあまり良いことではありません。
また、時にセンシティブなドキュメントを印刷する際に、こうした印刷履歴機能を警戒してファイル名を改ざんすることはあっても、メタ情報にまで思いを巡らせたことは無い人がほとんどだと思いますが、ヘッジファンドのオフィスなどでは、こうした複合機の内部記憶装置を定期的に交換してしまうところもあるとも聞きます。
Microsoft Print To PDF vs exiftool
そんなある日、メールで送られて来たPDFファイルを印刷するに当たり、その前にメタ情報を消そうとしたところ、エラーで消せない事態に。もちろんファイルは問題なく開くことが出来ます。ファイルのプロパティでメタ情報を確認すると、Windows 10標準のMicrosoft Print To PDFで生成されたことが確認されました。
1 2 3 4 5 6 7 8 |
$ exiftool -all= tt.pdf Error: Info object (46 0 obj) not found at 673878 - tt.pdf 0 image files updated 1 files weren't updated due to errors $ exiftool -all:all= tt.pdf Error: Info object (46 0 obj) not found at 673878 - tt.pdf 0 image files updated 1 files weren't updated due to errors |
試しにPDFのページ単位の結合・分離・回転などの編集ソフト、PDFModで開き何もせず上書きしてみると、exiftoolでエラーなくメタ情報を消すことが出来ました。
出力されるエラー情報を元に調べてみると、公式フォーラムで不具合は既に挙がっていて、作者より ver.11.94 にて解決済みとのこと。現在使っているバージョンを確認してみると、かなり古いものでした。
1 2 3 4 5 6 7 8 9 |
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic $ exiftool -ver 10.80 |
最新版exiftoolをソースからインストール
Ubuntuのexiftoolメンテナンスページによると、Ubuntu 20.04 LTSですらサポートされるexiftoolはver.11.88止まり。
作者さんはサードパーティレポジトリよりパッケージを提供することには否定的で、公式サイトのインストール手順に従ったインストールを推奨しています。さほど複雑な作業でもなさそうなので、その手順通りに最新版(執筆当時ver.12.18)をインストールしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
$ cd /usr/local/src $ sudo wget https://exiftool.org/Image-ExifTool-12.18.tar.gz --2021-02-18 13:39:52-- https://exiftool.org/Image-ExifTool-12.18.tar.gz exiftool.org (exiftool.org) をDNSに問いあわせています... 173.236.184.68 exiftool.org (exiftool.org)|173.236.184.68|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 4894969 (4.7M) [application/gzip] `Image-ExifTool-12.18.tar.gz' に保存中 Image-ExifTool-12.18.tar.gz 100%[===========================>] 4.67M 720KB/s in 11s 2021-02-18 13:40:04 (446 KB/s) - `Image-ExifTool-12.18.tar.gz' へ保存完了 [4894969/4894969] $ sudo tar -zxvf Image-ExifTool-12.18.tar.gz Image-ExifTool-12.18/ Image-ExifTool-12.18/exiftool Image-ExifTool-12.18/fmt_files/ Image-ExifTool-12.18/Changes Image-ExifTool-12.18/MANIFEST Image-ExifTool-12.18/html/ Image-ExifTool-12.18/t/ Image-ExifTool-12.18/README Image-ExifTool-12.18/perl-Image-ExifTool.spec Image-ExifTool-12.18/arg_files/ Image-ExifTool-12.18/META.yml Image-ExifTool-12.18/lib/ Image-ExifTool-12.18/Makefile.PL Image-ExifTool-12.18/config_files/ Image-ExifTool-12.18/META.json - 略 - $ cd Image-ExifTool-12.18/ $ ll drwxr-xr-x 8 501 staff 4096 Feb 9 23:45 ./ drwxr-xr-x 3 root root 4096 Feb 18 13:40 ../ -rw-r--r-- 1 501 staff 446293 Feb 9 23:45 Changes -rw-r--r-- 1 501 staff 21992 Jan 18 20:52 MANIFEST -rw-r--r-- 1 501 staff 1224 Feb 9 23:45 META.json -rw-r--r-- 1 501 staff 683 Feb 9 23:45 META.yml -rw-r--r-- 1 501 staff 2018 Dec 4 2019 Makefile.PL -rw-r--r-- 1 501 staff 12604 Feb 9 23:45 README drwxr-xr-x 2 501 staff 4096 Feb 18 13:40 arg_files/ drwxr-xr-x 2 501 staff 4096 Feb 18 13:40 config_files/ -rwxr-xr-x 1 501 staff 305299 Feb 9 22:57 exiftool* drwxr-xr-x 2 501 staff 4096 Feb 18 13:40 fmt_files/ drwxr-xr-x 3 501 staff 4096 Feb 18 13:40 html/ drwxr-xr-x 4 501 staff 4096 Feb 18 13:40 lib/ -rw-r--r-- 1 501 staff 5659 Feb 9 23:45 perl-Image-ExifTool.spec drwxr-xr-x 3 501 staff 20480 Feb 18 13:40 t/ $ sudo perl Makefile.PL Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Image::ExifTool Writing MYMETA.yml and MYMETA.json $ sudo make test cp lib/Image/ExifTool.pm blib/lib/Image/ExifTool.pm cp lib/Image/ExifTool/Charset/Latin.pm blib/lib/Image/ExifTool/Charset/Latin.pm - 略 - All tests successful. Files=101, Tests=548, 28 wallclock secs ( 0.27 usr 0.11 sys + 25.25 cusr 1.31 csys = 26.94 CPU) Result: PASS $ sudo make install Manifying 1 pod document Manifying 34 pod documents - 略 - Installing /usr/local/man/man3/Image::ExifTool::BPG.3pm Installing /usr/local/bin/exiftool Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.26.1/perllocal.pod $ exiftool -ver 12.18 |
早速試してみると、今度はエラー無くPDFのメタ情報を消すことが出来ました。
1 2 3 |
$ ./exiftool -all= tt.pdf Warning: [minor] ExifTool PDF edits are reversible. Deleted tags may be recovered! - /str500/conv5/tt.pdf 1 image files updated |
普段はいちいちターミナルを開いてコマンド打ってというのは手間なので、以前紹介したNautilus Actionに登録して、ファイルを右クリックからワンアクションで実行出来るようにしています。