[Android]4.2でpdf表示する
Androidでpdf表示する
Android端末で開発するアプリ内において、pdfを表示したいという案件がありました。
少し調べた所、API Level 21(Android 5)以降は標準でpdf表示をサポートしているみたいです。
最近の端末であれば、問題ないですが、まだまだAndroid4.2なんかの端末を利用しているところは多い、、、
でもそこはAndroid
ええ感じのライブラリが結構あります
pdfを表示するライブラリ
さすがはAndroid
フリーで使用できるライブラリがいろいろと出て来ます
なんか簡単そうなのでandoird-pdfを使ってみます
android-pdfの実装
もうコード書いたほうがわかりやすいと思うので、書きながら説明
AndroidStudioを用いた場合のサンプルです
ちなみに、下記に今回のサンプルプロジェクトをおいておきました
https://github.com/s-makinaga/PdfTest
[ build.gradle ]
dependencies { ・・・・・・ compile 'com.joanzapata.pdfview:android-pdfview:1.0.+@aar' }
ライブラリの追加です
Sync Projects with Gradle Files を実行しておいてください
勝手にライブラリをダウンロードしてくれます
[ activity_main.xml ]
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.westunitis.pdftest.MainActivity"> <com.joanzapata.pdfview.PDFView android:id="@+id/pdfview" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>
レイアウトにpdfviewのオブジェクトをおいてあげてます
これでほぼ完了
[ pdfの準備 ]
今回はassetに配置したpdfを読むことにします
下記ディレクトリになんか適当にpdfファイルを突っ込んでください
/app/src/main/assets/
私は test.pdf を作成して配置しました
[ MainActivity.java ]
public class MainActivity extends AppCompatActivity { PDFView pdfView; Button btTest1; Button btTest2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pdfView = (PDFView) findViewById(R.id.pdfview); pdfView.fromAsset("test.pdf").load(); } }
2行追加するだけです
PDFView のインスタンスを作成してあげて
findViewByIdで、レイアウト上に配置したオブジェクトに関連付けます
pdfView.fromAssetで、assetsに配置したpdfファイルを読み込んで
load()で表示
これだけ
たったこれだけでpdfが表示できます
ズームとかしたい
ちなみに、案件の中にズームとかもあったので、、、
たとえば、ズームイン・ズームアウトボタンを押下したさいにズームする、といった処理を入れる場合、こんな感じ
btTest1 = (Button)findViewById(R.id.test1); btTest1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { float zoom = pdfView.getZoom() + (float) 0.5; pdfView.zoomCenteredTo(zoom, new PointF(0, 0)); } });
PdfViewのオブジェクトに対して、zoomCenterdTo()です
1つ目の引数は倍率
getZoom()で現在の倍率を取得できるので、そいつに50%追加してます
2つ目の引数はよくわからない、、、
ドキュメントが見当たらないので、、、
PointFのオブジェクトを渡すみたいなので、(0,0)で初期化して渡しています
もう少し調査が必要、、、
それでもひとまずこれで、ボタン押下によるズームイン・ズームアウトができるようになりました。
めでたしめでたし
Androidはいろいろ便利なライブラリが公開されているので便利ですね