我遇到了运行时异常。我想从android设备创建一个PDF文档。 为此,我使用了iText库。
这是我创建PDF的代码
Document document = new Document();
PdfWriter.getInstance(document, outStream);
document.open();
document.add(new Paragraph(data));
document.close();
代码工作正常。它正在成功创建PDF。但它让我在运行时说例外
06-14 10:09:20.491: W/dalvikvm(764): Unable to resolve superclass of Lcom/itextpdf/awt/PdfGraphics2D; (1251)
06-14 10:09:20.491: W/dalvikvm(764): Link of class 'Lcom/itextpdf/awt/PdfGraphics2D;' failed
06-14 10:09:20.491: E/dalvikvm(764): Could not find class 'com.itextpdf.awt.PdfGraphics2D', referenced from method com.itextpdf.text.pdf.PdfContentByte.createGraphics
06-14 10:09:20.491: W/dalvikvm(764): VFY: unable to resolve new-instance 480 (Lcom/itextpdf/awt/PdfGraphics2D;) in Lcom/itextpdf/text/pdf/PdfContentByte;
06-14 10:09:25.280: E/dalvikvm(764): Could not find class 'org.bouncycastle.cert.X509CertificateHolder', referenced from method com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj
06-14 10:09:25.280: W/dalvikvm(764): VFY: unable to resolve new-instance 1612 (Lorg/bouncycastle/cert/X509CertificateHolder;) in Lcom/itextpdf/text/pdf/PdfReader;
我已经完成了清理并构建,将jar添加到libs文件夹并在订单和导出时选择它,并且我在过去2天完成了大量研究。但没有任何帮助我。 根据我的知识,应该有这些可能性。
任何帮助都会很明显。
答案 0 :(得分:8)
您发现PdfGraphics2D
扩展了java.awt.Graphics2D
,而您已经知道Graphics2D
是Android上的禁用课程。
您还遇到了与BouncyCastle相关的问题。
这告诉我你正在使用Java版的iText而不是Android port。在Android port中,我们用SpongyCastle替换了BouncyCastle(在Android上使用加密时推荐),我们删除了对禁用类的所有引用(例如在awt
和nio
包中)。 / p>
请切换到使用iText的Android port。
答案 1 :(得分:1)
如果你在android中使用 iText pdf库,那么只需在你的Proguard文件中写下这三行以避免警告,
-dontwarn com.itextpdf.text.pdf.**
-dontwarn org.bouncycastle.**
-dontwarn com.sun.mail.**