2012-06-29 2 views
0

내 애플리케이션에서 이미지를 PDF에로드하지 않아 이미지가 포함 된 PDF 페이지를로드 할 때마다 오류가 발생합니다.매니페스트pdfViewer pdf의 이미지를로드하지 않습니다.

First.java

package android.pdf.reader; 

import java.io.File; 
import java.io.FilenameFilter; 

import net.sf.andpdf.pdfviewer.PdfViewerActivity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class First extends ListActivity { 
    String LOGTAG=""; 
    String[] pdflist; 
    File[] imagelist; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
//  setContentView(R.layout.main); 

     File images = Environment.getExternalStorageDirectory(); 
     imagelist = images.listFiles(new FilenameFilter() { 
      public boolean accept(File dir, String name) { 
       return ((name.endsWith(".pdf"))); 
      } 
     }); 
     pdflist = new String[imagelist.length]; 
     for (int i = 0; i < imagelist.length; i++) { 
      Log.e(LOGTAG,imagelist[i].getName()); 
      pdflist[i] = imagelist[i].getName(); 
     } 
     this.setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, pdflist)); 
    } 

    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     String path = imagelist[(int) id].getAbsolutePath(); 
     Log.d(LOGTAG,path); 
     openPdfIntent(path); 
    } 

    private void openPdfIntent(String path) { 
     try { 
      final Intent intent = new Intent(First.this,Second.class); 
      intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path); 
      startActivity(intent); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Second.java

package android.pdf.reader; 

import net.sf.andpdf.pdfviewer.PdfViewerActivity; 
import android.os.Bundle; 

public class Second extends PdfViewerActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 

    public int getPreviousPageImageResource() { 
     return R.drawable.left_arrow; 
    } 

    public int getNextPageImageResource() { 
     return R.drawable.right_arrow; 
    } 

    public int getZoomInImageResource() { 
     return R.drawable.zoom_in; 
    } 

    public int getZoomOutImageResource() { 
     return R.drawable.zoom_out; 
    } 

    public int getPdfPasswordLayoutResource() { 
     return R.layout.pdf_file_password; 
    } 

    public int getPdfPageNumberResource() { 
     return R.layout.dialog_pagenumber; 
    } 

    public int getPdfPasswordEditField() { 
     return R.id.etPassword; 
    } 

    public int getPdfPasswordOkButton() { 
     return R.id.btOK; 
    } 

    public int getPdfPasswordExitButton() { 
     return R.id.btExit; 
    } 

    public int getPdfPageNumberEditField() { 
     return R.id.pagenum_edit; 
    } 
} 

:이 코드

06-29 11:07:29.900: E/APV.PDFRenderer(468): image with unsupported colorspace ColorSpace[CMYK] 
06-29 11:07:29.900: E/APV.PDFRenderer(468): java.lang.UnsupportedOperationException: image with unsupported colorspace ColorSpace[CMYK] 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFImage.parseData(PDFImage.java:319) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFImage.getImage(PDFImage.java:225) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFRenderer.drawImage(PDFRenderer.java:374) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFImageCmd.execute(PDFPage.java:654) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFRenderer.iterate(PDFRenderer.java:674) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.BaseWatchable.execute(BaseWatchable.java:263) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.BaseWatchable.go(BaseWatchable.java:197) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at com.sun.pdfview.PDFPage.getImage(PDFPage.java:237) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at net.sf.andpdf.pdfviewer.PdfViewerActivity.showPage(PdfViewerActivity.java:790) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at net.sf.andpdf.pdfviewer.PdfViewerActivity.access$12(PdfViewerActivity.java:769) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at net.sf.andpdf.pdfviewer.PdfViewerActivity$3.run(PdfViewerActivity.java:259) 
06-29 11:07:29.900: E/APV.PDFRenderer(468):  at java.lang.Thread.run(Thread.java:1096) 

:

는 로그 캣입니다
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="android.pdf.reader" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".First" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Second" 
      android:label="@string/app_name" > 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="8" /> 
</manifest> 

의견이 있으십니까?

감사

답변

2

당신의 PDF 파일의 이미지는 CMYK에 있고 당신은 다른 색 공간 (아마도 RGB)에서 읽을려고 노력하고 있습니다.

로그에 CMYK가 지원되지 않지만 pdfViewer에 CMYKColorSpace라는 클래스가 있으므로 도움이 될 것입니다.

코드를 게시하면 더 많은 도움을받을 수 있습니다.

편집 :

"프로젝트 :

내가 읽고 있던 문서는 원래의 라이브러리 com.sun.pdfview의 사실이었다 (! 내 나쁜)

andpdf의 documentation 그런 상태 AWT를 사용하는 SUN의 pdf 렌더러 포트입니다 AWT는 Android에서 지원되지 않으므로 가장 먼저 할 일은 AWT 객체를 Android 그래픽 객체에 매핑하는 것입니다. "

링크를 따라 가면 Image와 ColorSpace가 아직 매핑되지 않은 것을 볼 수 있습니다. 따라서 CMYK는 아직 지원되지 않습니다.

+0

응답 해 주셔서 감사합니다. 좋아, 내 코드를 넣어 – jlopez

+0

나는 모든 코드를 넣어 – jlopez

+0

나는 내 대답을 편집했습니다. 확인 해봐. –

관련 문제