Reputation: 1010
Guys i'm having a problem making this run in android but no problems when i run it in 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();
}
This code will extract the whole text in the PDF and transfer it in a text file but I do not know if Android can do that.
I think my problem here is the filepathing: parsePdf("assets/Resume.pdf","assets/Resume.txt");
I can't make it work.
I have changed the pathing but the error is not solved. I debugged it and i still got an error:
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
i know the problem and it is PdfReader reader = new PdfReader(pdf);
. Did i get the pathing wrong?
PS:I am a newbie when it comes to debugs. please correct me if its the wrong debug report.
Thank you.
Upvotes: 1
Views: 1081
Reputation: 1010
ahh Yes! i solved it. instead of using file path i used:
reader = new PdfReader(getResources().openRawResource(R.raw.resume));
Upvotes: 0
Reputation: 2149
There are 3 solutions that you can try.
Instead of putting the file in assets folder put in a raw folder under res. And use the following path to refer it. "android.resource://[your_package_name]/raw/Resume.pdf"
Asset folder path should be given like this file:///android_asset/Resume.pdf
Instead of putting the file in assets folder put it in SD Card and SD card root path can be obtained like this Environment.getExternalStorageDirectory();
Upvotes: 1
Reputation: 72321
To open an asset file in Android you should use getAssets().open("Resume.txt")
.
Upvotes: 1