Xamarin Android PDF

在 Xamarin.Android 當中讀取 PDF 資料…I

James Tsai 2017/02/28 08:44:21
707

主題

Xamarin.Android 當中讀取 PDF 資料I

文章簡介

平常我們在文件上使 PDF 作一些文件儲存格式,但遇到 Mobile App要讀取 PDF 的時候,就會常常不知該如何完成,那就讓本篇文章來指引如何在 Xamarin.Android 中完成PDF文件的讀取~~~

作者

James Tsai

版本/產出日期

V1.0/2017.2.27



1. 前言


以下我們就簡單的來看看如何在 Xamarin.Android 當中,將PDF資料透過手機上既有的PDF App 來讀取。


2. 環境準備


建立可測試執行Xamarin.Android的專案環境。




3. 本文


前置準備


PDF文件準備:

準備一個PDF文件放在 Xamarin.Android 專案的 Asserts 中,如下圖:



測試程式的 Layout 外觀的準備:

XamarinDroidForReadPdfFile專案,找到Resources -> layout當中打開Main.axml,將設計畫面處理成如下圖所示:



實線框當中的元件為Button,由上到下的 Id 依序為 CreatePDFFileFromLocalButton DeletePDFFileButtonReadPDFUsingDefaultAppButton


操控介面的程式實際撰寫


打開專案底下的 MainActivity.cs 來增加對應的程式碼。




首先設定畫面按鈕與按鈕點選的事件註冊,如下圖程式碼:




在此測試的 App 其中的一個按鈕功能是想要做到從建立PDF檔案到Android 實體檔案路徑上下圖展示額外寫一個方法來完成從將檔案複製到Android 實體路徑的功能:




接著回到 CreatePDFFileFromLocalButton 按鈕Click事件的程式碼,呼叫此方法。




繼續完成第二DeletePDFFileButton按鈕的Click功能,將已經存在Android 手機實體路徑的PDF檔案刪除,如下圖程式碼:




最後第三按鈕ReadPDFUsingDefaultAppButtonClick功能,則是切換到另外一個叫作ReadPdfUsingDefaultAppActivityActivity,如下圖:




而在 ReadPdfUsingDefaultAppActivity這個 Activity OnCreate方法當中設計了呼叫ReadPdfByDefaultApp的方法,如下圖:




其中虛線框的OpenFile() 方法則是參考
https://forums.xamarin.com/discussion/39912/open-pdf-in-android-default-pdf-reader
當中AlessandroCaliaro所回應的程式碼完成的。


最後記得到此專案的屬性中,找到 Android 資訊清單,設定所需要的兩個使用權限Read_External_StorageWrite_External_Storage


測試執行與結果


開始測試之前,請先從 Visual Studio "工具" 選單當中,找到 "Android -> Android 裝置監視器"



"Android 裝置監視器" 當中,看到 "File Explorer" 分頁。




接著回到在 Visual Studio 當中執行測試該專案後,回到 "Android 裝置監視器" "File Explorer" 當中的 "data > data" 底下,找到該測試專案 XamarinDroidForReadPdfFile.XamarinDroidForReadPdfFile 使用檔案的情形。




在執行起來的 App1當中,點選第一顆按鈕:



就會在 "File Explorer" 當中看到出現了 "MyPDFDemoFile.pdf "




接著再按下第顆按鈕準備透過手機預設的PDF App讀取PDF




若手機上沒有安裝讀取PDF App則會顯示如下畫面:




當然,若是有安裝好讀取PDFApp的話,就可以正確開啟所指定的PDF檔案。




以上就是Xamarin.Android專案上透過預設PDF App讀取PDF檔案,有興趣的人趕快試用看看吧~~


4. 參考來源


Open PDF in Android default PDF reader:
https://forums.xamarin.com/discussion/39912/open-pdf-in-android-default-pdf-reader

James Tsai