为什么我会收到"找不到PdfGraphics2D"错误?

R9J*_*R9J 0 pdf android pdf-generation itext

我遇到了运行时异常.我想从android设备创建一个PDF文档.为此,我使用了iText库.

这是我创建PDF的代码

Document document = new Document();
PdfWriter.getInstance(document, outStream);

document.open();
document.add(new Paragraph(data));

document.close();
Run Code Online (Sandbox Code Playgroud)

代码工作正常.它正在成功创建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;
Run Code Online (Sandbox Code Playgroud)

我已经完成了清理并构建,将jar添加到libs文件夹并在订单和导出时选择它,并且我在过去2天内完成了大量研究.但没有任何帮助我.根据我的知识,应该有这些可能性.

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

任何帮助都会很明显.

Bru*_*gie 8

您已经发现PdfGraphics2D扩展java.awt.Graphics2D,并且正如您所知道的那样Graphics2D是Android上的禁用类.

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

这告诉我你正在使用Java版本的iText而不是Android端口.在Android端口中,我们用SpongyCastle替换了BouncyCastle(在Android上使用加密时推荐),我们删除了对禁用类的所有引用(例如在awtnio包中).

请切换到使用iText 的Android端口.