1

みんな、これをAndroidで実行するのに問題がありますが、Javaで実行しても問題ありません。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);   
    tv = (TextView) findViewById(R.id.txtview);
    Button bt = (Button) findViewById(R.id.button1);
    am = this.getAssets();
    bt.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // do something when the button is clicked
            try {
                parsePdf("android.resource://com.example.panalyzer_v1/raw/resume.pdf","android.resource://com.example.panalyzer_v1/raw/resume.txt");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
      }
    );
}

public void parsePdf(String pdf, String txt) throws IOException {
    PdfReader reader = new PdfReader(pdf);
    PrintWriter out = new PrintWriter(new FileOutputStream(txt));
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        out.println(PdfTextExtractor.getTextFromPage(reader, i));
    }
    out.flush();
    out.close();
}

このコードは PDF 内のテキスト全体を抽出し、テキスト ファイルに転送しますが、Android がそれを実行できるかどうかはわかりません。ここでの問題はファイルパスだと思いますparsePdf("assets/Resume.pdf","assets/Resume.txt");。うまくいきません。

パスを変更しましたが、エラーは解決されません。私はそれをデバッグしましたが、まだエラーが発生しました:

10-22 20:16:13.850: E/AndroidRuntime(657): FATAL EXCEPTION: main
10-22 20:16:13.850: E/AndroidRuntime(657): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.panalyzerdemo/com.example.panalyzerdemo.MainActivity}: java.lang.NullPointerException
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.os.Looper.loop(Looper.java:123)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread.main(ActivityThread.java:4627)
10-22 20:16:13.850: E/AndroidRuntime(657):  at java.lang.reflect.Method.invokeNative(Native Method)
10-22 20:16:13.850: E/AndroidRuntime(657):  at java.lang.reflect.Method.invoke(Method.java:521)
10-22 20:16:13.850: E/AndroidRuntime(657):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-22 20:16:13.850: E/AndroidRuntime(657):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-22 20:16:13.850: E/AndroidRuntime(657):  at dalvik.system.NativeStart.main(Native Method)
10-22 20:16:13.850: E/AndroidRuntime(657): Caused by: java.lang.NullPointerException
10-22 20:16:13.850: E/AndroidRuntime(657):  at com.example.panalyzerdemo.MainActivity.onCreate(MainActivity.java:36)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-22 20:16:13.850: E/AndroidRuntime(657):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-22 20:16:13.850: E/AndroidRuntime(657):  ... 11 more
10-22 20:16:16.831: I/Process(657): Sending signal. PID: 657 SIG: 9

私は問題を知っていますPdfReader reader = new PdfReader(pdf);。パスを間違えましたか?

PS: デバッグに関しては初心者です。デバッグ レポートが間違っている場合は修正してください。

ありがとうございました。

4

3 に答える 3

1

Android でアセット ファイルを開くには、getAssets().open("Resume.txt").

于 2012-10-22T09:36:02.460 に答える
1

あなたが試すことができる3つの解決策があります。

  1. ファイルをassetsフォルダーに入れる代わりに、resの下のrawフォルダーに入れます。そして、以下のパスを使用して参照してください。「android.resource://[パッケージ名]/raw/Resume.pdf」

  2. アセット フォルダのパスは、次のように指定する必要があります file:///android_asset/Resume.pdf

  3. ファイルを assets フォルダーに入れる代わりに、SD カードに入れます。SD カードのルート パスは、この Environment.getExternalStorageDirectory(); のように取得できます。

于 2012-10-22T09:36:18.010 に答える
0

ああはい!私はそれを解決しました。私が使用したファイルパスを使用する代わりに:

reader = new PdfReader(getResources().openRawResource(R.raw.resume));

于 2012-10-22T13:10:52.110 に答える