Unity PDF Rendererのサンプルをしてみた

#環境構築
[PDF RendererのUnityPackage]
(https://assetstore.unity.com/packages/tools/gui/pdf-renderer-32815)
Unity 5.3.8　以上（この記事で2019バージョン使います）


#メイン特徴
PDF RendererをUnityプロジェクトに入れたら「PDFViewer」Prefabオブジェクトを開く。「PDFViewer」オブジェクトを検索したら、「Load Settings」の下に「File Source」選択ぼたんがあります。その選択でPDFファイルを取るため、複数な方法があります。まずは各方法をまとめています。
<img width="400" alt="tes.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/7cb67101-8654-9375-d233-51d52f6c3479.png">

各方法を例のフォルダーで試します。

![example.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/0aa2ae3c-e2f9-92b4-1a58-f0ea16d3ced8.png)


##Web URL方法
まずはWeb URLの方法です。例のフォルダー、「Examples」を開いて、PDFViewer_Webの例を開く。「File Source」の下に、URLを入力します。この記事で400以上ページの本を表示試します。

そのPDFのリンクはこちらへ
[Model-driven Software Development](https://profs.info.uaic.ro/~adiftene/Licenta/Documentatie/2_Model-driven%20software%20developm%20-%20Sami%20Beydeda%20&%20Matthias%20Book%20&_317.pdf)

<img width="400" alt="pdf_viewer.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/719b858d-ffe7-638f-f30f-49da6b25d36d.png">

ページを沢山があればローディングパネルを表示されます。ローディングが終わったら、PDFファイルを普通に表示されます。

<img width="300" alt="load.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/abf49631-aa5d-5b8f-5156-3dc4e2ee6df1.png">

##Streaming Assets方法
次の方法はStreaming AssetsでPDFファイルを取ります。「Examples」でPDFViewer_StreamingAssetsの例ｗｐ開く。そのまえに「Assets」フォルダで新しいフォルダー、「StreamingAssets」を作成してください。作成したら、自分のPDFファイルを「StreamingAssets」フォルダーに入れます。そのしたら、「Load Settings」のしたに、PDFファイル名を「File Name」入力に入れてください。忘れずに、ファイルのエクステンション、「*.pdf」をつけてください。もし、PDFファイルは「StreamingAssets」のサブフォルダーでいるなら、「Load Settings」の「Folder」に入れてください。

<img width="400" alt="streamingassets.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/0a56705f-5e05-0846-2abc-896e0bdb49f5.png">


##Resources方法
Streaming Assets方法のように、Resourcesフォルダーからファイルを開く。違いが、ファイルのエクステンションに「*.pdf」の後「.bytes」をつけてください。「Load Settings」のしたに「File Name」に入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/bed33513-ca4d-2586-a632-29c77260b71c.png)

<img width="400" alt="resource.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/65bf7cb9-cd11-2569-4779-2fd874dbe69e.png">

##File Path方法
File Path方法で、ファイルの位置をいれば完成です。「Browse」ボタンでも、ファイルの検索ができます。

<img width="400" alt="filepath.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/b09cd1f7-fb70-36f4-9199-fb2b18a34287.png">

##Persistent Data方法
Persistent Dataの方法はStreaming Assetsの方法とResources方法のように、ファイルを「Persistent Data」フォルダーに入れてください。Unityの「Persistent Data」フォルダーの位置はこの方法で確認できます。

```csharp
Debug.log(Application.persistentDataPath);
```

普段はこの場所である
Windows →　C:/Users/<ユーザー名>/AppData/LocalLow/<会社名>/<アプリ名>
Android → /storage/emulated/0/Android/data/<アプリ名>/files 
iOS → /var/mobile/Containers/Data/Application/<guid>/Documents

参考
https://docs.unity3d.com/ja/current/ScriptReference/Application-dataPath.html
https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html

##Assets方法
Assets方法を使うため、PDFファイルにAssetファイルに変換が必要です。変換方法は、Unityで選択したファイルに右クリックして、「PDF Renderer → Convert to .assets」をします。そのあと、変換されたファイルをPDF Assetに入れます。

<img width="400" alt="convert.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/d9b6439b-3412-065c-6ac9-d032c8413f56.png">

<img width="400" alt="asset.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/5545841c-3ae3-a099-861d-59daf47e30f3.png">

##Bytes方法
最後はPDFViewer_Bytesの例を開きます。PDFViewerのオブジェクト検査したら、「PDFBytesSupplierExample.cs」でPDFファイルを取る。このPDFBytesSupplierExampleはbyte arrayとして、PDF内容を保存しています。Supplier Function入力にPDFBytesSupplierExample.csからのリターンされたbyte arrayを入れます。入れたbyte arrayをPDFに変換して、表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/2bc95403-3d9c-577f-bb69-239b37ea7b77.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156398/94c2c414-57b9-74e8-6e98-1a5f45df5fed.png)