会社の給与や賞与の明細がパスワード付きPDFで投下されるのだけど、開くたびにパスワード入力するのめんどい。というわけで、パスワードを外したい。
pdftkならパスワードも外せるので、やりましょう。
$ pdftk MEISAI.pdf input_pw PASSWORD output OUTPUT.pdf [Ret:0 23:02:31]
Error: Unexpected Exception in open_reader()
java.lang.NoClassDefFoundError: org/bouncycastle/crypto/BlockCipher
at pdftk.com.lowagie.text.pdf.StandardDecryption.update(StandardDecryption.java:94)
at pdftk.com.lowagie.text.pdf.PdfEncryption.decryptByteArray(PdfEncryption.java:568)
at pdftk.com.lowagie.text.pdf.PdfString.decrypt(PdfString.java:273)
at pdftk.com.lowagie.text.pdf.PdfReader.readDecryptedDocObj(PdfReader.java:723)
at pdftk.com.lowagie.text.pdf.PdfReader.readDocObj(PdfReader.java:1109)
at pdftk.com.lowagie.text.pdf.PdfReader.readPdf(PdfReader.java:508)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(PdfReader.java:172)
at com.gitlab.pdftk_java.InputPdf.add_reader(InputPdf.java:100)
at com.gitlab.pdftk_java.TK_Session.add_reader(TK_Session.java:94)
at com.gitlab.pdftk_java.TK_Session.open_input_pdf_readers(TK_Session.java:111)
at com.gitlab.pdftk_java.TK_Session.<init>(TK_Session.java:1086)
at com.gitlab.pdftk_java.pdftk.main_noexit(pdftk.java:152)
at com.gitlab.pdftk_java.pdftk.main(pdftk.java:130)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.crypto.BlockCipher
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 13 more
Error: Failed to open PDF file:
202006_0127.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
ダメじゃん。org.bouncycastle.crypto.BlockCipherとかいうクラスが見つからないらしい。
パッケージ足らんのかなと思ってpdftk - aur見てたら、Dependenciesにbcprov (optional) - support for signed PDF documents
だそうで。bcprov
はUpstream URLがhttps://www.bouncycastle.org/java.htmlらしいので、bouncycastleってこれドンピシャじゃん。
$ sudo pacman -S bcprov
$ pdftk MEISAI.pdf input_pw PASSWORD output OUTPUT.pdf
WARNING: The creator of the input PDF:
MEISAI.pdf
has set an owner password (which is not required to handle this PDF).
You did not supply this password. Please respect any copyright.
問題なし。owner password設定あるのにお前が入れたのちゃうやんけ、著作権大事にせえや、って書いてあるけど著作権保護のつもりのパスワードじゃないからどうでもいいのさ。