我想为Android创建一个电子书阅读器应用程序但在我的情况下,所有书籍基本上只是以PDF格式编译的扫描图像。
但经过大量的敲击和多次测试后发现Android上的PDF渲染速度非常慢,尤其是在低端设备上。
所以我想知道是否有一种方法可以直接显示这些图像而不是PDF,但仍然将它们显示为“书”,所以从技术上来说是一个“图像查看器”,但用户并没有注意到。可能吗?
我很感激任何帮助。谢谢!
答案 0 :(得分:1)
PDF不是由图像组成的,它们是矢量,有一种方法可以将其转换为图像文件。
有一些开源的java PDF到图像转换器,但是:
http://code.google.com/p/pdfonejava/
我确信还有更多,但你必须找到它们。
然后只是缓存这些图像,并有几个开源的Android图像查看器,如:
这是你的目标还是完全关闭?
答案 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
}
}