2012-08-13 33 views
0

我目前正在构建一个android应用程序,它在ListView中显示一组pdf文件。我不想显示文件名,而是想从pdf的元数据中获取标题,并在列表中显示该文件,如果该文件没有标题集,那么只需使用文件名即可。我使用iText的ATM,这里是我有:Android阅读pdf元数据 - 内存问题

File[] filteredFiles = root.listFiles(filter); 
for (int i=0;i<filteredFiles.length;i++) { 
    try {     
     File f = filteredFiles[i];     
     PdfReader reader = new PdfReader(f.getAbsolutePath()); 
     String title = reader.getInfo().get("Title"); 
     reader.close(); 

     //Do other stuff here... 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

这工作得很好,它得到我想要的数据,但它的slowww。另外,如果文件超过2MB,有时会出现内存崩溃。有没有更好的方法来做到这一点?也许一种获得元数据的方式,而不必真正打开PDF文件?

任何帮助非常感谢,谢谢。

+0

要提高速度,试图找到另一个库:在您的应用程序的其他地方PDFBOX为example.Or解析/加密数据并准备信息设置为您的ListView来自巫库 – Yahor10 2012-08-13 10:11:22

+0

你PdfReader对象? – 2013-04-17 16:24:08

回答

0

您可以试试快速PDFParse库。它优化了性能&小内存消耗。

File[] filteredFiles = root.listFiles(filter); 
for (int i=0;i<filteredFiles.length;i++) { 
    try {     
     File f = filteredFiles[i];     
     PDFDocument reader = new PDFDocument(f.getAbsolutePath()); 
     String title = reader.getDocumentInfo().getTitle(); 
     reader.close(); 

     //Do other stuff here... 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}