0

PdfViewer ライブラリを使用して、Android アプリケーションで .pdf ファイルを開きたいです。ライブラリ ファイルをダウンロードし、lib フォルダーに追加しました。また、マニフェストにアクセス許可を追加しました。ファイルを参照すると、Loader Dialog "Loading PDF Page"が表示され、ファイルが表示されません。これが私のコードです。

//PDFファイルを閲覧する

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");              
startActivityForResult(intent, PICK_FILE_REQUEST);

//onActivityResult

public void onActivityResult(final int requestCode, int resultCode,
            Intent data) {
        try {
            switch (requestCode) {
                case PICK_FILE_REQUEST:
                if (resultCode == RESULT_OK) {
                    try {
                        //To read PDF file
                        Uri selectedFile = data.getData();
                        String path =  selectedFile.getPath().toString();

                        final Intent intent = new Intent(MainActivity.this, ViewPdf.class);
                        intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
                        startActivity(intent);
                    } catch (Exception e) {
                        ShowDialog_Ok("Error", "Cannot Open File");
                    }
                }
                break;
            }
        } catch (Exception e) {
        }
    }

ViewPdf.class

public class ViewPdf 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;
    }
}
4

1 に答える 1

1

PDFViewer をプロジェクトのライブラリとして追加し、そのリソースを HERE のガイドに従ってコピーします。これは私にとっては機能するコードです。assets フォルダから pdf を読んでいます。あなたの要件としてカスタマイズを行います。1.上記のリンクから pdf リーダー プロジェクトをダウンロードします。2. プロジェクト内のすべてのリソースをコピーします。3. PdfViewerActivity から (pdf を表示したい) アクティビティを拡張します。4. pdfview アクティビティの pdfreader プロジェクトからすべてのメソッドをコピーします。5.実行します。ハッピーコーディング

   AssetManager assetManager = getAssets();
   InputStream in = null;
   OutputStream out = null;
   File file = new File(getFilesDir(), "ABC.pdf");
   try {
    in = assetManager.open("ABC.pdf");
    out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE);

    copyFile(in, out);
    in.close();
    in = null;
    out.flush();
    out.close();
    out = null;
} catch (Exception e) {
    Log.e("tag", e.getMessage());
}

 Intent intent = new Intent(this, YourNextActivityName.class);
 intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, getFilesDir() +           "/ABC.pdf");
startActivity(intent);

}

   private void copyFile(InputStream in, OutputStream out) throws    IOException {
  byte[] buffer = new byte[1024];
  int read;
  while ((read = in.read(buffer)) != -1) {
    out.write(buffer, 0, read);
}
}

あなたのpdfviewアクティビティのメソッドは

   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; }
于 2015-05-11T11:21:09.800 に答える