2014-01-30 82 views
0

使用iText簽署PDf,但簽名驗證發出異常。請幫助我解決問題。 什麼版本的itext,海綿城堡庫被使用?iText在android中的pdf簽名驗證

目前

我使用

1.sc-光jdk15on-1.47.0.2.jar

2.scpkix-jdk15on-1.47.0.0.jar

3.scprov,jdk15on- 1.47.0.0.jar

4.itextg-5.4.5.jar

6.itext-2.1.7.jar

的例外是:

java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.X509CertParser 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.lowagie.text.pdf.PdfPKCS7.(Unknown Source) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.lowagie.text.pdf.AcroFields.verifySignature(Unknown Source) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.lowagie.text.pdf.AcroFields.verifySignature(Unknown Source) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.example.itextpdfsign.MainActivity.verifySignature(MainActivity.java:178) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.example.itextpdfsign.MainActivity.verifySignatures(MainActivity.java:165) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.example.itextpdfsign.MainActivity.onCreate(MainActivity.java:74) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.os.Handler.dispatchMessage(Handler.java:99) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.os.Looper.loop(Looper.java:123) 01-30 13:45:36.569: E/AndroidRuntime(8059): at android.app.ActivityThread.main(ActivityThread.java:3683) 01-30 13:45:36.569: E/AndroidRuntime(8059): at java.lang.reflect.Method.invokeNative(Native Method) 01-30 13:45:36.569: E/AndroidRuntime(8059): at java.lang.reflect.Method.invoke(Method.java:507) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-30 13:45:36.569: E/AndroidRuntime(8059): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-30 13:45:36.569: E/AndroidRuntime(8059): at dalvik.system.NativeStart.main(Native Method)

回答

0

我看到兩件事情是錯在你的堆棧跟蹤:

  1. 我看到我的名字的引用:com.lowagie表明您使用的是舊版本的iText。此版本不應再用於specific reasons
  2. 我看到org.bouncycastle的引用。這表明你沒有使用iText的Android端口。

您只需要iTextG。不要使用com.lowagie的東西。不要引入不同版本的BouncyCastle;改用SpongyCastle。

+0

@布魯諾......謝謝澄清我的懷疑。唯一的例外,當我即執行簽名驗證碼 – user1987823

+0

公共靜態PdfPKCS7 verifySignature我只得到(AcroFields字段,字符串名稱) \t \t \t拋出GeneralSecurityException,IOException異常{ \t \t的System.out.println(「簽名涵蓋整個文檔:」 \t \t \t \t + fields.signatureCoversWholeDocument(name)); \t \t的System.out.println( 「文檔修訂:」 + fields.getRevision(名稱) \t \t \t \t + 「的」 + fields.getTotalRevisions()); \t \t PdfPKCS7 pkcs7 = fields.verifySignature(name); (「完整性檢查OK?」+ pkcs7.verify()); \t \t return pkcs7; \t} – user1987823

+0

這裏指的是PdfPKCS7&AcroFields iText-2.1.7jar在這裏我需要錯誤...請讓我知道對於Android有沒有其他版本... – user1987823