2

このhttps://github.com/jblough/Android-Pdf-Viewer-Library を使用しています6つのPDFをアセットフォルダーに入れ、タブアクティビティからロードしようとしましたが、「PDFページをロード中」のままです. PDFファイルがそれほど大きくないことを確認してください:P

これは私が使用しているコードです:

public class MainActivity extends TabActivity {

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tabHost = getTabHost();

setupTabHost();

}
private void setupTabHost() {
addTab("page1", R.drawable.thumbnail1, PdfActivity.class, 1);
addTab("page2", R.drawable.thumbnail2, PdfActivity.class, 2);
addTab("page3", R.drawable.thumbnail3, PdfActivity.class, 3);
addTab("page4", R.drawable.thumbnail4, PdfActivity.class, 4);
addTab("page5", R.drawable.thumbnail5, PdfActivity.class, 5);
addTab("page6", R.drawable.thumbnail6, PdfActivity.class, 6);
    }

private void addTab(String tag, int drawableId, Class<?> c, int pagenumber) {
//create tab
TabHost.TabSpec spec = tabHost.newTabSpec(tag);

    //set layout
View thumbnail = LayoutInflater.from(this).inflate(R.layout.thumbnail, getTabWidget(), false);
ImageView icon = (ImageView) thumbnail.findViewById(R.id.thumbnail_icon);
icon.setImageResource(drawableId);
    spec.setIndicator(thumbnail);

//add intent
Intent intent = new Intent(this, c);
                       intent.putExtra(net.sf.andpdf.pdfviewer.PdfViewerActivity.EXTRA_PDFFILENAME, "file:///android_asset/page"+pagenumber+".pdf");
spec.setContent(intent);

//add tab
    tabHost.addTab(spec);
     }
}


public class PdfActivity extends PdfViewerActivity {


@Override
public void onCreate(Bundle savedInstanceState) {
    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; }

}

これはログに記録されていますが、確かにアセット フォルダーに page1.pdf があります。

10-09 16:55:00.223: I/PDFVIEWER(3650): onCreate
10-09 16:55:00.223: E/PDFVIEWER(3650): restoreInstance
10-09 16:55:00.308: D/dalvikvm(3650): GC_CONCURRENT freed 168K, 4% free 12979K/13383K, paused 10ms+2ms
10-09 16:55:00.373: I/PDFVIEWER(3650): Intent { cmp=xxxx (has extras) }
10-09 16:55:00.378: I/PDFVIEWER(3650): ST='file 'file:///android_asset/page1.pdf' not found'
10-09 16:55:00.383: I/PDFVIEWER(3650): ST='reading page 1, zoom:1.0'
10-09 16:55:00.403: D/dalvikvm(3650): GC_CONCURRENT freed 107K, 3% free 13358K/13703K, paused 2ms+14ms
10-09 16:55:00.438: D/dalvikvm(3650): GC_FOR_ALLOC freed 127K, 3% free 13626K/14023K, paused 13ms
10-09 16:55:00.573: D/dalvikvm(3650): GC_CONCURRENT freed 155K, 4% free 13963K/14407K, paused 2ms+24ms
4

2 に答える 2

0

ファイル パスに問題があります。次のように、パスから削除file://します。

File pdfFile = new File(Environment.getExternalStorageDirectory(),"bell.pdf");
String path = pdfFile.getAbsolutePath();
                openPdfIntent(path);

    protected void openPdfIntent(String path) {
    // TODO Auto-generated method stub
     try {
            final Intent intent = new Intent(MainActivity.this, Second.class);
            intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME,path);
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
}
于 2015-04-23T12:40:47.040 に答える
-2

同様の問題に遭遇したときにソースコードを調べて自分で試した後、アクティビティを呼び出すときに VIEW インテントを使用してこれを機能させることができました。res\rawまた、ファイルに特定のパスを使用する必要があり、フォルダーからプルすることしかできませんでした。asset微調整してフォルダーからプルすることもできるかもしれませんが、私はそこまで行ったことはありません.

// This is wherever you are launching the activity from another activity
Intent pdfIntent = new Intent(this, PdfActivity.class);
pdfIntent.setAction(Intent.ACTION_VIEW);
pdfIntent.setDataAndType(Uri.parse("android.resource://com.your.package/raw/filename"), "application/pdf");

startActivity(pdfIntent);

VIEW アクションを使用すると、そのクラスは実際にファイルをプルして一時ディレクトリに保存し、適切に表示できるようにします。

于 2013-09-11T22:28:17.233 に答える