androidでPDF読み込むアプリを作りたいがエラーになる
androidで他のアプリからPDFを読み込んでPDFを表示させたいのですが上手く表示できませんでした。
何も描写されません。
原因のわかる方教えていただけませんか。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Intent intent = getIntent();
Uri uri = intent.getData();
//String name=uri.getLastPathSegment();
String path =uri.getPath();
ParcelFileDescriptor fd = null;
PdfRenderer renderer = null;
PdfRenderer.Page page = null;
try {
// SDカード直下からtest.pdfを読み込み、1ページ目を取得
fd = ParcelFileDescriptor.open(new File(path), ParcelFileDescriptor.MODE_READ_ONLY);
renderer = new PdfRenderer(fd);
page = renderer.openPage(1);
ImageView view = (ImageView) findViewById(R.id.image);
int viewWidth = view.getWidth();
int viewHeight = view.getHeight();
float pdfWidth = page.getWidth();
float pdfHeight = page.getHeight();
Log.i("test", "viewWidth=" + viewWidth + ", viewHeight=" + viewHeight
+ ", pdfWidth=" + pdfWidth + ", pdfHeight=" + pdfHeight);
// 縦横比合うように計算
float wRatio = viewWidth / pdfWidth;
float hRatio = viewHeight / pdfHeight;
if (wRatio <= hRatio) {
viewHeight = (int) Math.ceil(pdfHeight * wRatio);
} else {
viewWidth = (int) Math.ceil(pdfWidth * hRatio);
}
Log.i("test", "drawWidth=" + viewWidth + ", drawHeight=" + viewHeight);
// Bitmap生成して描画
Bitmap bitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
page.render(bitmap, new Rect(0, 0, viewWidth, viewHeight), null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
view.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fd != null) {
fd.close();
}
} catch (IOException e) {
e.printStackTrace();
}
if (page != null) {
page.close();
}
if (renderer != null) {
renderer.close();
}
}
}
}