複数の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.pdf
2017.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