長い話を短く

長い話を短く

複数のPDFを1つの文書にコンパイルしようとしています。lsファイルが私があるディレクトリにあり、読み取ることができることを示しています(-rw-r--r--)。ただし、実行しようとすると、pdftk 2017.pdf cat output test.pdf次のエラーが発生します。

Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: 2017.pdf (Permission denied)
   at gnu.java.nio.channels.FileChannelImpl.open(libgcj.so.16)
   at gnu.java.nio.channels.FileChannelImpl.<init>(libgcj.so.16)
   at gnu.java.nio.channels.FileChannelImpl.create(libgcj.so.16)
   at java.io.RandomAccessFile.<init>(libgcj.so.16)
   at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Error: Failed to open PDF file: 
   2017.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.

ジョブに追加のファイルを追加すると、ファイルごとにエラーが発生します。

コマンドラインでPDFの名前を変更できますが、mv 2017.pdf foo.pdf同じエラーが発生します。Error: Unexpected Exception in open_reader() java.io.FileNotFoundException: foo.pdf (Permission denied)

たとえば、存在しないファイルを呼び出そうとすると、 pdftk 123.pdf cat output test.pdf他のエラーが発生します。

Error: Unable to find file.
Error: Failed to open PDF file: 
   123.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.

tail 2017.pdf2017.pdfの最後の数行も表示されます。

<<
/Info 63 0 R
/ID [<cc59759cedaf07420bbe3250ba5d8971><f259ad128310d106c7aa80b673c4bd70>]
/Root 62 0 R
/Size 64
>>
startxref
42883
%%EOF

を使用してファイルを表示して読み取ることができますが、なぜ読み取ることができtailないのですか?pdftk

答え1

長い話を短く

Snaps アクセス管理は質問

この問題を解決するには、次の操作を行います。

  • $ HOMEフォルダで作業してください。シンボリックリンクは機能しません。
  • ディストリビューション以外のソースから pdftk をインストールします。たとえば、ppa:malteworld/ppaバージョン3.0.0がありますpdftk-java

元の返信

私も同じ問題があります。私はUSBドライブのフォルダでこれを行いました。実際、私のホームディレクトリのサブフォルダでこれを行うと効果があります。

/tmpの下のサブフォルダで作業しようとしましたが、うまくいかなかったので混乱しています(「PDFファイルを開けませんでした」という詳細なエラーがありませんでした)。 /mnt の下にマウントされたセカンダリ ディスクのサブフォルダーで試しても同様です。

私はこれがスナップショットの制限に関連しているかもしれないと思います(私は最新のUbuntu 18.04.3を使用しています)。しかし、私はスナップショットを扱った経験がほとんどないので、もう探索することはできません。

もしそうなら、これは良くありません。これは、Ubuntuユーザーがホームフォルダ以外の場所でpdftkを使用するのを防ぐためです。例えば。 USBドライブ、追加ディスク、共有ネットワークドライブ。

(申し訳ありません。コメントに返信できません。評判が足りません...)

答え2

の一部として公開された別のソリューションGitHubの問題#7pdftkプロジェクトの場合:

sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk

より簡単ですが、sudo権限が必要です。これはUbuntu 18.04で動作します。

同じGitHub問題で他のユーザーが言及しました。

sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
sudo rm /snap/bin/pdftk
sudo ln -s /usr/bin/pdftk /snap/bin/pdftk

これは本質的に同じですが、/snap/bin/pdftkシンボリックリンクに置き換えられます/usr/bin/pdftk(シンボリックリンクが前に/snap/binある場合は/usr/bin便利です$PATH)。

答え3

/ snapとは異なるドライブにあるファイルの場合、私にとって役に立つ解決策は、pdftkアクセスをリムーバブルメディアに拡張することでした。

snap connect pdftk:removable-media

答え4

いいえスナップ(アーチストア)からインストールしましたが、まだ奇妙な内容が表示されます。これは、あなたと同じ権限エラーではなく、存在しないファイルをロードしようとしたときに表示されるエラーです。幸いなことにpdftk、.stdinを使用してstdinからデータを読み取ることができます-。ファイルが1つだけなのでcat入れてもいいです。

cat 2017.pdf | pdftk - cat output test.pdf

関連情報