この間、pdfファイルのページの順番を入れ替えようとしたんです。Linux環境で。
問題のpdfファイルは、スキャン時に設定を怠ったのか、見開き2ページの順番が逆になっていたものでした。本来p1,p2,p3,p4,p5,p6,p7...とページが並ぶべきところが、p1,p3,p2,p5,p4,p7,p6...となっていたんです。見開きで表示する分には問題ないんでしょうけれど、1ページずつ見るとなると行ったり来たりしなければならないので鬱陶しく、当然修正したくなったのです。ただ、ページ数が多く、libreoffice等のGUIアプリで手動でちまちま編集するのは流石に厳しかったのですね。
で、コマンドラインから実行出来るユーティリティpdftkを使おうとしたんですが。そのsnap版を入れて使ってみたら、pdfファイルが存在しないとエラーが出る。
具体的には下記のような感じです。入力ファイル名がaaa.pdf、800ページまでを入れ替えてaaa_fix.pdfに保存するコマンドです。コマンドに並べたい順番にページを入力するんですが、多すぎるので途中(p8からp799まで)は省略しています。(なお実際のコマンドはスクリプトで出力、実行しています。)
$ pdftk A=aaa.pdf cat A1 A3 A2 A5 A4 A7 A6 (中略) A800-end output aaa_fix.pdf
Error: Unable to find file.
Error: Failed to open PDF file:
aaa.pdf
Done. Input errors, so no output created.
もちろんファイルはカレントに存在します。だけど見つからない、開けないという。どうにもなりません。
調べてみると、同様の問題に遭遇した例はいくつか見受けられました。あまり例が多くなく、状況もまちまちで原因がいまいちはっきりしなかったのですが、それらを総合した結果としては、どうもsnapの実行ファイルのファイルアクセス権限が制限されている事が原因のように思われました。私の使っているubuntuの現行であるところの25.10ではapparmor周り等でセキュリティ権限の厳格化が行われ、幾つかのアプリでファイルが開けない問題が発生したりしましたが、その関連とかかな、と。
ので、 調べた中にあった解決法の一つ、snapの実行ファイルから/usr/binにシンボリックリンクを貼る、というのをやってみました。下記コマンドです。
$ sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
すると上記エラーが解消され、正常に変換されるようになったのです。
これで直ったという事は、snapの実行ファイルディレクトリからの実行と/usr/bin/以下からの実行では権限が違う、という話だったのでしょうか。そうだとして、セキュリティの面からはそういう区別をするポリシーもわからなくはないのですが、ユーザー側からすれば不具合でしかないし、そういう齟齬は生じないようにして欲しかったですね。snapは環境によらず動作出来るのが売りの筈なのですし。
なおpdftkにはaptからインストール出来るjava版があって、試してはいませんがこちらなら今回のような問題は起こらないでしょう。私はjavaは処理のオーバーヘッドがきついし実行環境周りでよく問題が起きる(起きていた)のがトラウマになっているので基本使わないのですが、その辺を気にしない方であればこちらの方が無難かもしれません。
ともあれ、そういう事で。やれやれです。