【问题标题】:Stuck on creating pdf file with iText坚持使用 iText 创建 pdf 文件
【发布时间】:2014-12-26 16:41:39
【问题描述】:

我正在尝试使用 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 (包括表格等)时遇到了这些错误。

你能在这方面给我指导吗?

【问题讨论】:

    标签: android pdf pdf-generation itext


    【解决方案1】:

    您遇到的问题不是由 iText 引起的,而是由创建 Android 的人做出的特定设计选择引起的。如果您查看有关 iText for Android 的官方页面(更好地称为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 端口。

    【讨论】:

    • 你完全正确。正如我发现我在设置图像时遇到错误。我用这个代码设置它:Bitmap bitmap =BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.imageName); ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 85 , out); Image image = Image.getInstance(out.toByteArray());
    • @Bruno Lowagie,好像awt还在itextg中,当将itextg jar包含到项目中时,它正在生成与awt相关的错误,比如这里,stackoverflow.com/questions/31098721/…
    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2016-04-04
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2012-11-03
    相关资源
    最近更新 更多