0

我遇到了运行时异常。我想从 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 天我做了很多研究。但没有任何帮助。根据我的知识,应该有这些可能性。

  • 外部 jar 未正确加载
  • PdfGraphics2D 类扩展了 java.awt.Graphics2D,这在 android 中不可用

任何帮助都将是可观的。

4

2 回答 2

8

您已经发现了PdfGraphics2Dextends java.awt.Graphics2D,并且您已经知道Graphics2D它是 Android 上的一个禁止类。

您还遇到了与 BouncyCastle 相关的问题。

这告诉我您使用的是 Java 版本的 iText 而不是Android port。在Android 端口中,我们将 BouncyCastle 替换为 SpongyCastle(在 Android 上使用加密时建议使用),并且我们删除了对禁止类的所有引用(例如在awtnio包中)。

请切换到使用 iText 的Android 端口

于 2013-06-14T06:46:53.080 回答
1

如果您在 android 中使用iText pdf 库,那么只需在您的 Proguard 文件中写入这三行以避免警告,

-dontwarn com.itextpdf.text.pdf.**
-dontwarn org.bouncycastle.**
-dontwarn com.sun.mail.**
于 2018-03-12T07:18:22.057 回答