2012-02-16 21 views
0
 byte[] pdfBinary ; 
     File file1 = new File("/mnt/sdcard/","metaphysics.pdf"); 
     Log.d(TAG, "got a file reference"); 
     Uri uri1 = Uri.fromFile(file1); 

     pdffilename = file1.getName(); 
     Log.d(TAG, "got File name"); 
     pdfBinary = readUriContent(uri1); 
     Log.d(TAG, "read from uri"); 

私はPDFファイルのサムネイルを取得しようとしていました。これを行うには、バイナリ形式でMy PDFファイルをRAMに保存する必要があります。小さなファイルの場合は良いですが、20MBのような大きなファイルの場合、java.lang.OutofMemoryErrorを表示しています。どのように私はそれを行うことができます任意の提案。メモリ不足エラーandroid

ありがとうございます。

+1

この質問は、いくつかのR&Dを行い、その後....ここに返信用 –

答えて

0

this answerを見てみましょう。

アイデア:ファイルチャネルにバッファをマッピングし、ちょうど最初のページを読みます。それはメモリ消費を減らすはずです。

のPDFレンダラはまた、アンドロイドに移植されています:Andpdf

私は、これはあなたを助けることを願っています。

+0

感謝を投稿何度も尋ねました。私は** Andpdf **について知っており、彼らのコードを使用しています。問題はメモリー不足の例外です。 500KBのような小さなファイルはうまくいっています –

+0

あなたの 'readUriContent()'メソッドを投稿してください。 – Stephan

+0

'プライベートバイト[] readUriContent URI(URI){ \tバイト[]結果= NULL; \t試み{ \t入力ストリームは、()openInputStream(URI)= getContentResolverあります。 \t int size = is.available(); \t結果=新しいバイト[サイズ]; \t int pos = 0; \t int cnt = is.read(result、pos、size-pos); \t一方(CNT> 0){ \t \t POS + = CNT。 \t cnt = is.read(result、pos、size-pos); \t} \t is.close(); (例外e){ \t \t Log.e(TAG、e.getMessage() \t} \t返品の結果; } 「 –