android - 如何在我的 android 应用程序中使用 itext 库从 pdf 文件中提取图像

标签 android

我想使用 itext 库从 pdf 文件中提取图像,我将我的 pdf 文件放在 android 应用程序的 Assets 文件夹中,并使用 itext 库在 android 中显示这些图像。

最佳答案

iText 是一个 java 库,所以它可以在 android 中使用。

可以保存到assets文件夹吗。 。它是只读的

改为尝试保存到 SD 卡。

请看https://github.com/itext/i7js-samples/tree/develop/publications/book/src/test/java/com/itextpdf/samples/book/part4/chapter15 特别是文件:Listing_15_30/31*.java 他们应该教你如何在 iText 中提取图像

为安卓定制

import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.PdfImageObject;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;

public class MyImageRenderListener implements RenderListener {

/** The new document to which we've added a border rectangle. */
protected String path = "";

/**
 * Creates a RenderListener that will look for images.
 */
public MyImageRenderListener(String path) {
    this.path = path;
}

/**
 * @see com.itextpdf.text.pdf.parser.RenderListener#beginTextBlock()
 */
public void beginTextBlock() {
}

/**
 * @see com.itextpdf.text.pdf.parser.RenderListener#endTextBlock()
 */
public void endTextBlock() {
}

/**
 * @see com.itextpdf.text.pdf.parser.RenderListener#renderImage(
 *     com.itextpdf.text.pdf.parser.ImageRenderInfo)
 */
public void renderImage(ImageRenderInfo renderInfo) {
    try {
        String filename;
        FileOutputStream os;
        PdfImageObject image = renderInfo.getImage();
        if (image == null) return;
        filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
        os = new FileOutputStream(filename);
        os.write(image.getImageAsBytes());
        os.flush();
        os.close();
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}


   public void renderText(TextRenderInfo renderInfo) {
   }
}

关于android - 如何在我的 android 应用程序中使用 itext 库从 pdf 文件中提取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120748/

相关文章:

java - Mockito:默认返回值

java - 我如何从 Android SDK 解析 PHP 数组?

Android AlarmManager 每 "round"10 分钟触发一次

android - Nexus 7 在 Windows/Eclipse/ADB 中断开连接

c# - 使用 Xamarin 的简单 2D 游戏

java - 如何在android中的外部存储中创建目录,将外部存储路径显示为 "storage/emulated/0"?

android - 以编程方式将android设备连接到热点(无互联网)切换回带互联网的wifi

android - Android Sqlite更新不起作用

android - 在 Android Studio 中启用 Proguard 后制作签名的 apk 时出错

android - Android 上的 Chrome 浏览器 : Granted Quota for IndexedDB suddenly almost 0