Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】WebViewでPDFドキュメントを表示する方法を解説

AndroidアプリでPDFファイルを表示したい場面は多くありますが、実はAndroidの標準的なWebViewにはPDFを直接レンダリングする機能がありません。そこで本記事では、Googleドライブのビューアを経由してWebView上にPDFを表示する方法を、実際のコード例とともにステップ形式でわかりやすく解説します。

手順1:新規プロジェクトを作成する

まず、Android Studioで新しいプロジェクトを作成しましょう。メニューから「File」⇒「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。

手順2:activity_main.xml にコードを追加する

res/layout/activity_main.xml に以下のコードを記述します。ここでは、Webページを読み込むためのボタンを1つ配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    tools:context=".MainActivity">

    <Button
        android:onClick="loadPage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Load web Page" />

</RelativeLayout>

手順3:MainActivity にコードを追加する

次に、src/MainActivity に以下のコードを追加します。

ポイント:WebViewはPDFを直接開けないため、Googleドライブのビューア(https://drive.google.com/viewerng/viewer?embedded=true&url=)に対象PDFのURLをパラメータとして渡すのがコツです。

package app.tutorialspoint.com.sample;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void loadPage(View view) {
        WebView webview = new WebView(this);
        webview.getSettings().setJavaScriptEnabled(true);
        setContentView(webview);

        String pdf =
            "https://www.adobe.com/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
        webview.loadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + pdf);
    }
}

手順4:AndroidManifest.xml を編集する

ネットワーク上のPDFを読み込むため、マニフェストファイルへのインターネット権限の宣言が必須です。androidManifest.xml に以下のように追記しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.sample">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行して動作を確認しよう

それでは、実際にアプリを起動してみましょう。実機のAndroidスマートフォンをPCに接続している前提で進めます。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。デバイス一覧から自分のスマートフォンを選択すると、端末側にPDFが読み込まれた画面が表示されるはずです。

【Android開発】WebViewでPDFドキュメントを表示する方法を解説

補足:注意点と代替案

この方法はGoogleドライブのビューア経由でPDFを描画する仕組みのため、オフライン環境では動作しない点に注意が必要です。また、ページ送りやズームなどより高度な操作、あるいはローカル保存されたPDFの表示が必要な場合は、「AndroidPdfViewer」のような専用ライブラリや、PDF.jsを使ったカスタム実装を検討するとよいでしょう。

  1. AndroidのassetsフォルダからWebViewへHTMLファイルを読み込む方法を徹底解説

    はじめに Androidアプリ開発では、HTMLファイルや画像などの静的コンテンツをアプリ内に組み込みたいケースがよくあります。この記事では、assetsフォルダに配置したHTMLファイルをWebViewで読み込んで表示する方法を、サンプルコード付きでステップごとに解説します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。プロジェクト名やパッケージ名など、必要な項目を入力して進めてください。 ステップ2:レイアウトファイル(activity_main.xml)を編

  2. 【Android】Googleドライブで書類を簡単にPDFスキャンする方法

    ペーパーレス化が進む現代社会では、書類のデジタル化はもはや必須と言えます。書類をスキャンしてデータ化しておけば、必要な情報を素早く見つけられるうえ、紙の山による散らかりも防げます。かつてスキャンを行うには、パソコンと大型の周辺機器が必要でした。しかし今では、そうした手間のかかる古い方法に頼る必要はありません。スマートフォンには高度な画像認識技術が搭載されており、高解像度で書類をスキャンできます。Android向けにもPDFスキャン対応アプリは多数存在しますが、有料だったり広告が多かったりと、使い勝手に難があるものも少なくありません。実は、そんなサードパーティ製アプリは一切不要です。必要なのはA