Android中的图像查看器

时间:2011-02-19 06:41:28

标签: android pdf

我想为Android创建一个电子书阅读器应用程序但在我的情况下,所有书籍基本上只是以PDF格式编译的扫描图像。

但经过大量的敲击和多次测试后发现Android上的PDF渲染速度非常慢,尤其是在低端设备上。

所以我想知道是否有一种方法可以直接显示这些图像而不是PDF,但仍然将它们显示为“书”,所以从技术上来说是一个“图像查看器”,但用户并没有注意到。可能吗?

我很感激任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

PDF不是由图像组成的,它们是矢量,有一种方法可以将其转换为图像文件。

有一些开源的java PDF到图像转换器,但是:

http://www.jpedal.org/

http://code.google.com/p/pdfonejava/

我确信还有更多,但你必须找到它们。

然后只是缓存这些图像,并有几个开源的Android图像查看器,如:

http://code.google.com/p/android-mysample-project/source/browse/trunk/ARCamera/src/net/android/sample/imageviewer/ImageViewer.java?spec=svn9&r=9

这是你的目标还是完全关闭?

答案 1 :(得分:0)

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    PdfReader reader;
    File file = new File("/sdcard/vineeth/anni.prc");
    try {
        reader = new PdfReader(file.getAbsolutePath());
        for (int i = 0; i < reader.getXrefSize(); i++) {
            PdfObject pdfobj= reader.getPdfObject(i);
            if (pdfobj == null || !pdfobj.isStream()) {
                continue;
            }
            PdfStream stream = (PdfStream) pdfobj;
            PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
            if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
                byte[] img = PdfReader.getStreamBytesRaw((PRStream) stream);
                FileOutputStream out = new FileOutputStream(new File(file.getParentFile(), 
                String.format("%1$05d", i) + ".jpg"));
                out.write(img);
                out.flush();
                out.close();
            }
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
}