坚持用iText创建pdf文件

时间:2014-10-30 14:59:31

标签: android pdf pdf-generation itext

我正在尝试使用iText创建pdf文件。

我将itextpdf-5.5.3.jar包含在我的项目中,并按照本教程中的步骤进行操作:

http://blog.mettletech.co/wp/blog/generate-pdf-file-in-android/

但是当这段代码出现以下错误时:

10-30 16:52:57.163: E/dalvikvm(28969): Could not find class 'com.itextpdf.awt.PdfPrinterGraphics2D', referenced from method com.itextpdf.text.pdf.PdfContentByte.createPrinterGraphicsShapes
10-30 16:52:57.213: E/dalvikvm(28969): Could not find class 'java.awt.image.PixelGrabber', referenced from method com.itextpdf.text.Image.getInstance
10-30 16:52:57.223: E/dalvikvm(28969): Could not find class 'java.awt.image.BufferedImage', referenced from method com.itextpdf.text.Image.getInstance

我在简化pdf上没有任何错误,但是我在创建更复杂的pdf(包括表格等)时遇到了这些错误。

你可以给我带头吗?

1 个答案:

答案 0 :(得分:2)

您遇到的问题不是由iText引起的,而是由创建Android的人做出的特定设计选择。如果你看一下关于Android的iText的官方页面(更好地称为iTextG),你会发现在Android上禁止使用某些类。这就是为什么使用iTextG jar和而不是普通的iText jar非常重要的原因:

  

已删除不在Google App Engine whitelist上的任何类的引用。

正如您在Android课程中所了解的那样, awt 包中的所有类(以及 nio 包等中的所有类)都无法在Android上使用。因此,您不能使用诸如PdfGraphics2D之类的类,因为该类是抽象java.awt.Graphics2D类的实现,对于Android和GAE而言不在Google's white list上。

因此,要么您错误地引入了与AWT相关的功能,要么您没有使用iText的Android端口。