導航:首頁 > 文檔加密 > androidapipdf

androidapipdf

發布時間:2023-03-30 09:17:23

① c# 實現pdf文件預覽功能

利用Adobe PDF Reader 控制項,實現在Winform中預覽PDF文檔。 實現方法如下:

(1)前提條件

必須事先在計算機安裝Adobe Reader軟體。Adobe Reader是免費軟體,可以從Adobe官網下載安裝

(2)在Visual Studio中新建一個「Windows 窗體應用程序」項目

(3)在工具箱上點滑鼠右鍵-->選擇項 -->COM組件-->Adobe PDF Reader

② 製作安卓PDF閱讀器:三、實現文本選擇

我為什麼要開啟這個系列,努力試著從源頭開始,用 PDFium 製作一款閱讀器?有人喜歡問這個做了有什麼用,這個是唯一的嗎?

當然不是唯一的,底層技術更不是我的。不過我認為在維護者的推動下,PDFium 越來越完善,功能越來越多,不 真正 拿來做些什麼實在是可惜了。另一個重要原因則是,其他APP要麼臃腫或者簡陋,要麼用著磕手、滑動卡頓、誤觸頻發,而且大多還不免費。( 更正,近年來倒是多了好多免費的PDF閱讀器 )

目標期望:

熱身運動:當檢測到單擊( GestureDetector )時,若點擊處存在超鏈接,則列印出超鏈接的對象。

頭文件:fpdf_doc.h

需要將屏幕坐標轉換為頁面坐標,然後再次在native層轉換為所謂的user space、page space。別問我那是啥我也不知道。不過在論壇提問後,有人替我指出了相關文檔所在,有時間去看看!

屏幕坐標:[event.getX(), event.getY()]
頁面坐標:先前提過將整本PDF當作一張超級大圖,subsampling-scale-imageview 有一系列的 viewToSource 坐標轉換方法。屏幕轉換得到 source 坐標後,減去點擊頁面的左上角坐標,就是頁面坐標。

原始頁面坐標需用 FPDF_DeviceToPage 再次轉換,才能傳給FPDFLink_GetLinkAtPoint,獲取坐標處的鏈接指針。

超鏈接對象統一返回字元串,可以是Uri地址,也可以是頁碼 @頁碼 。

熱身運動2:在單擊處獲取一個英文單詞或者漢語片語,需要用到安卓的 BreakIterator。

頭文件:fpdf_text.h

首先實現 nativeGetCharIndexAtCoord 方法,獲取單擊附近的文字索引,需進行同樣的坐標轉換。

若返回的文字index大於等於零,則此 index 指向該頁面全部文本當中的一個字元。全部文本用 FPDFText_GetText 獲取(實現 nativeGetText):

接下來就可以用 BreakIterator 分詞了:

與繪制PDF本身差不多,不過 bitmap 換成 rect 而已。用到的API依次是FPDFText_CountRects、FPDFText_GetRect。

直接將選框覆蓋繪制在前。若要繪制在後面的背景上,就需要三層透明視圖了,那麼載入鋪塊和縮略圖的時候就要用透明色清空 bitmap,頁面的白色背景等也需要另外繪制(Google PDF Viewer應該就是這樣,還給背景加了陰影)。這些較為復雜,到時候再說。

有個問題可能需要解決:同一行的選框,部分沒有合並。

都是小事兒,暫時不在這上面花時間。

之前做過類似的事情,將普通 TextView 自帶的文本選擇功能禁用了,然後用API自己做出一個來,包括單擊選詞,長按托選,放大鏡等等。所以相關的內容還是熟悉的。

繪制 Selection Handle 可以用 AppCompat 支持庫中的圖標資源:

控點的觸控操作也很簡單,在 Action_Down 中檢測落點是否在其中一個 handle 內。若是,則在 Action_Move 中一邊移動該 handle,一邊檢測新的字元索引,作為文本選擇的新邊界。

由於PDF的復雜性,頁面上的字元索引可能間雜排列,比如頭一段開頭是100,下一段開頭50,再下一段150。這就造成先前簡單的選擇系統「失效」了:

沒什麼解決方案,API 就這么點。而且,靜讀天下、Google PDF 查看器都是這樣的,唯有 ezpdfreader 沒有這個問題。

③ 製作安卓PDF閱讀器:七、實現多實例打開、文檔目錄樹

無論什麼平台,任何查看器都理應支持多實例模式。不僅僅要支持多實例模式,還要可以切換到單實例模式,而且在多實例下,在外部App重復打開同一文件,可跳轉至已有實例,而不會重復打開相同的多實例,這便是設計。

為此,需大量運用 static 全局變數。不必擔心內存泄漏,只要不崩潰,就可以在 onDestroy 中釋放引用。若是不慎崩潰,整個虛擬進程都被關閉了,又有什麼可擔心的呢?

從桌面打開主界面有兩種選擇:

主界面UI

底欄:【前進,後退,搜索,書簽大綱,宮格更多】

宮格更多 第二底欄(底欄之上)
宮格:【夜間模式,歷史記錄,書簽,設置,縮略圖模式,轉屏,朗讀,頁面跳轉,進度條,小縮略圖,左側小縮略圖,右側小筆記】

底欄:【退出程序,退離程序,返回】

尼瑪這些慢慢做,夠我做一年……

先從底欄做起吧,然後定製底欄,然後宮格及其變形動畫。

燃鵝時間有限,所以可能取消動畫,取消自定義,速戰速決……

優化 TellH / RecyclerTreeView :

其實 listview 也能達到類似的效果(見下方),不過既然有人(似乎是抖音安卓團隊)專門抽離出了libarary,就不必再造輪子了,改進就行。寥寥二三文件就不必新建庫模塊了,源碼拉直接拉進去,簡單又省事。

目錄對話框:viewpager,並排【書簽,目錄,注釋列表】

Dialog + viewpager + FragmentPagerAdapter + 以上三個Fragment

需注意 FragmentPagerAdapter 的構造參數。應當傳入 getChildFragmentManager() 而不是 getSupportFragmentManager(),否則因為這里是 Dialog 嵌套 Fragment,傳全局的FragmentManager會導致APP崩潰(No view found for id … for fragment … 異常)。

既然決定使用 Dialog 了,不妨直接上 DialogFragment。後者的配置更加靈活,既可以當做 Dialog 彈出對話框,又可以選擇將之當作普通的 Fragment ,直接載入進入主界面布局。

對話框界面設計分三層:

Toolbar【各種小按鈕】
viewpager【書簽,目錄,注釋列表】
TabLayout【書簽,目錄,注釋列表】

拉取PDF目錄,需要用到的API有:FPDFBookmark_GetFirstChild、FPDFBookmark_GetNextSibling、FPDFBookmark_GetTitle、FPDFBookmark_GetDest,沒有編輯功能。

其實 PDF 的書簽目錄除了頁碼外,還可以包含一些視圖參數,大概是縮放、頁面位置這些。既然PDFium不支持編輯書簽,那暫時就這樣。

記錄一下復用這個目錄樹對話窗口引發的recyclerview不響應notifydatasetchanged調用的bug。(解決fragment嵌套viewpager再嵌套recyclerview導致recyclerview無法正常更新的BUG。)

dismiss並復用後,點擊列表中的目錄,目錄不再展開,recyclerview不更新視圖。但是 滾動 一下recyclerview(即使條目很少無法真正滾動,向上劃一下也會有效果。),發現視圖更新了,這證明邏輯處理並無問題。那麼問題出在哪呢?

答案是 viewpager 的adapter不能被復用。關鍵在於這個adapter傳入了一個getChildFragmentManager()對象。而這玩意兒在對話框dismiss後就會立即失效。所以即使視圖是復用的,第二次的onCreateView也需要重新給viewpager設置adapter。

android 如何獲得pdf文件的頁數

分頁方法:

  1. 打開網路pdf 思路整體還是來源與圖片的載入。

  2. android中載入網路圖片的框架有很多個。如image-laoder, fresco、glide等,首先都是從內存中找圖片,如果內存中沒有,接著從本地找,本地沒有在從網路下載。

  3. android中載入pdf也是類似,首先從本地找pdf文件,如果本地存在該pdf文件,直接打開,如果本地不存在,將該pdf文件下載到本地在打開。

  4. 下載文件用到了retrofit2的庫,已經封裝到android_pdf中了。

  5. 2.依賴android_pdf庫方法

  6. 2.1 在項目的gradle中增加如下代碼:

  7. compile 'com.lidong.pdf:android_pdf:1.0.1'

  8. 2.2 一句代碼就可以載入網路pdf。

  9. ```

  10. pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //設置pdf文件地址

  11. ```

  12. 2.3對fileFromLocalStorage(this,this,this,fileUrl,fileName)的解析

  13. /**

  14. ```

  15. * 載入pdf文件

  16. * @param onPageChangeListener

  17. * @param onLoadCompleteListener

  18. * @param onDrawListener

  19. * @param fileUrl

  20. * @param fileName

  21. */

  22. public void fileFromLocalStorage(

  23. final OnPageChangeListener onPageChangeListener,

  24. final OnLoadCompleteListener onLoadCompleteListener,

  25. final OnDrawListener onDrawListener,

  26. String fileUrl,

  27. final String fileName)

  28. ```

  29. 1. OnPageChangeListener onPageChangeListener :翻頁回調

  30. 2. OnLoadCompleteListener onLoadCompleteListener:載入完成的回調

  31. 3. OnDrawListener:頁面繪制的回調

  32. 4. String fileUrl : 文件的網路地址

  33. 5. String fileName 文件名稱

  34. 3.使用android_pdf庫方法

  35. 3.1寫一個布局文件

  36. ```

  37. <?xml version="1.0" encoding="utf-8"?>

  38. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  39. xmlns:tools="http://schemas.android.com/tools"

  40. android:id="@+id/activity_main"

  41. android:layout_width="match_parent"

  42. android:layout_height="match_parent"

  43. tools:context="com.lidong.pdf.androidpdf.MainActivity">

  44. <com.lidong.pdf.PDFView

  45. android:id="@+id/pdfView"

  46. android:layout_width="match_parent"

  47. android:layout_height="match_parent"

  48. />

  49. </RelativeLayout>

  50. ```

  51. 3.2在MainActivity中載入

  52. ```

  53. import android.graphics.Canvas;

  54. import android.os.Environment;

  55. import android.support.v7.app.AppCompatActivity;

  56. import android.os.Bundle;

  57. import android.util.Log;

  58. import android.widget.Toast;

  59. import com.lidong.pdf.PDFView;

  60. import com.lidong.pdf.api.ApiManager;

  61. import com.lidong.pdf.listener.OnDrawListener;

  62. import com.lidong.pdf.listener.OnLoadCompleteListener;

  63. import com.lidong.pdf.listener.OnPageChangeListener;

  64. import com.lidong.pdf.util.FileUtils;

  65. import java.io.File;

  66. import java.io.FileOutputStream;

  67. import java.io.IOException;

  68. import java.io.InputStream;

  69. import okhttp3.ResponseBody;

  70. import rx.android.schelers.AndroidSchelers;

  71. import rx.functions.Action1;

  72. import rx.schelers.Schelers;

  73. public class MainActivity extends AppCompatActivity implements OnPageChangeListener

  74. ,OnLoadCompleteListener, OnDrawListener {

  75. private PDFView pdfView ;

  76. @Override

  77. protected void onCreate(Bundle savedInstanceState) {

  78. super.onCreate(savedInstanceState);

  79. setContentView(R.layout.activity_main);

  80. pdfView = (PDFView) findViewById( R.id.pdfView );

  81. displayFromFile1("http://file.chmsp.com.cn/colligate/file/00100000224821.pdf", "00100000224821.pdf");

  82. }

  83. /**

  84. * 獲取打開網路的pdf文件

  85. * @param fileUrl

  86. * @param fileName

  87. */

  88. private void displayFromFile1( String fileUrl ,String fileName) {

  89. pdfView.fileFromLocalStorage(this,this,this,fileUrl,fileName); //設置pdf文件地址

  90. }

  91. /**

  92. * 翻頁回調

  93. * @param page

  94. * @param pageCount

  95. */

  96. @Override

  97. public void onPageChanged(int page, int pageCount) {

  98. Toast.makeText( MainActivity.this , "page= " + page +

  99. " pageCount= " + pageCount , Toast.LENGTH_SHORT).show();

  100. }

  101. /**

  102. * 載入完成回調

  103. * @param nbPages 總共的頁數

  104. */

  105. @Override

  106. public void loadComplete(int nbPages) {

  107. Toast.makeText( MainActivity.this , "載入完成" + nbPages , Toast.LENGTH_SHORT).show();

  108. }

  109. @Override

  110. public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {

  111. // Toast.makeText( MainActivity.this , "pageWidth= " + pageWidth + "

  112. // pageHeight= " + pageHeight + " displayedPage=" + displayedPage , Toast.LENGTH_SHORT).show();

  113. }

  114. ```

⑤ 安卓平板到底行不行—Galaxy Tab S7使用三個月感想

因為我想要一個設備來隨時方便地閱讀文獻與記筆記(其實是摸魚看愛奇藝)那為什麼要買一個安卓平板? iPad Pro不香嗎?香是香,可是我除了一個mac mini,一個airpods 還有一台黑蘋果也沒啥iOS生態。而且iOS還沒有我肥腸喜歡的某些安卓獨有的特色愛啪啪(例如kiwi瀏覽器,可以裝任何chrome插件;例如tachiyomi,可以看幾乎所有漫畫 ,此外還有等等等iOS給不了的優秀獨立app)

正面

背面

原裝皮套支架效果

既然是打著促進學習的旗號買的平板,當然要記筆記啊。作為一個苦逼基礎醫學研究僧,每天除了肝實驗就是在看文章(以及找機會摸魚 )

由於我在PC上使用Zotero作為文獻管理工具,並且設置了Webdav來同步文獻PDF,所以我在平板上安裝了Zoo for zotero,一樣也能同步條目和PDF附件 !配合xodo在PDF里標記和勾勾畫畫非常舒適!

一些隨筆筆記則使用三星筆記記錄,筆跡非常跟手幾乎毫無延遲,聽講座的時候記筆記很方便。可以說自從買了這個板板之後我主要都是用平板來看文獻了,效率高的不止一點 。

三星筆記用來隨記

三星筆記

順帶一說三星筆記在Win10端有UWP,但非三星電腦沒法從微軟商店下載,不過可以從不正經的渠道安裝 ,而且一樣能同步。

配合Xodo看文獻是真的舒服

第二個痛點就是為了桌面模式,連上藍牙滑鼠鍵盤,儼然成了一台不太正經的PC。甚至還能連接顯示器來使用,雙屏顯示

。在Dex模式下,三星瀏覽器,Edge,kiwi都能很好的支持PC頁面。特別推薦kiwi瀏覽器,安裝了user-agent switch和油猴之後,幾乎能獲得和PC端chrome瀏覽器一致的體驗。不過Dex模式下也有某些app dpi適應有點問題(沒錯就是微信,qq音樂,還有x寶),B站、A站的app也沒法全屏播放,騰訊視頻和愛奇藝倒是有正經的hd版(體驗意外的還不錯,果真買後愛奇藝 )。不過既然都有kiwi了,看B站就不如直接瀏覽器播放來的舒服了,再整點油猴腳本,瀏覽體驗噌噌噌地上漲啊

Tab S7的Dex模式-還能同時使用平板

比較爽的是在連接顯示器開啟Dex模式的同時還能操控正常模式的平板,相當於拓展了一個副屏 。不過使用外接顯示器似乎就沒法在平板上開啟120Hz了,略有不爽

大家都知道華為的跨屏協同很不錯,其實三爽也有類似的操作,就是Samsung Flow(三星用戶手冊.ipg )。使用這玩意就能夠在平板上同步手機的通知以及傳輸文件(前提你得是三星手機),還能夠直接把手機投屏上去,開啟套娃模式

使用flow協同的手機攝像頭對著屏幕XD

視覺:120hz 刷新率感知很強,但由於是LCD所以相比於OLED存在一些拖影,不過依舊非常順滑。另外雖然不支持HDR,但是支持P3色域,亮度宣稱也有500nit,加上2k屏的加持,觀感上還是不錯的。

聽覺:AKG調音的四揚聲器真的非常非常,聲音洪亮、層次感非常足(玄學聽感,至少比我的elitebook的喇叭好)

文字處理:雖然微軟全家桶功能上做的差強人意,不過我覺得至少滿足最基本的文字需求還是可以的...配合onedrive改個PPT,寫點小報告也還行。照片修圖:這個就得提到Lightroom了,安卓端的lightroom我覺得已經可以基本上滿足很多人的需要了。基本的控制條都有,而且還能用預設,簡單修個圖完全足夠。什麼?你說處理raw格式要訂閱?嘿嘿,資金不充裕的同學可以轉道酷安找找快樂版。 如果還要更加高級的功能,還可以下載PS Mobile ,這玩意基本上就是網頁版photoshop的本地緩存套殼,可以離線使用,除了不能裝插件基本上正經photoshop該有的功能都有了,配合spen修圖ps爽歪歪 。

Lightroom for Samsung基本上該有的都有了,不過我看非samsung專版的lightroom基本上也差不多就少了幾個三星的模板

實在需要PS還有PS Mobile這個神器

雖然有865加持,但由於我基本上不玩手游,所以我也對性能啥的也沒啥感覺。對於平板的主要 娛樂 用途就是看視頻和漫畫。雖然B站app不咋地,但是騰訊視頻HD和愛奇藝HD都意外的還行,UI布局設計啥的明顯都對平板有優化。另外我還在自己的NAS上部署了Plex伺服器(小姐姐們的家 ),配合plex的app體驗還不錯。而至於漫畫,那必須推薦tachiyomi這個神器,使用這個app幾乎可以下載所有網路上的漫畫(甚至是某些里站 ),對於看漫畫來說大屏幕真的太舒服了。

PLEX

漫畫神器TachiyomiJ2K,在平板上看更是舒服

屏幕品控和拖影:許多人說S7屏幕邊角發黃,我也翻車了 ,不過我覺得還行,正常情況下看不太出來(如果能換S7+的OLED屏將絕殺,可惜換不得 )。另外相比較手上OLED屏幕的S20,LCD的120hz確實有明顯的拖影,敏感的人還是選擇S7+吧。

鏡頭拉跨:雖然幾乎不用後置的鏡頭,但畫質實屬不行,只能說有個廣角聊勝於無吧。

應用生態:其實這應該屬於安卓碎片化和國內流氓廠商的鍋,太多應用沒有對平板做適配了。雖然現在的安卓api框架下大多數應用都能做到dpi自適應(這一點比ipad好,至少不會不適配就給你整個大黑邊),但布局完全就是個大號手機,甚至某些廠商連自適應dpi都給你閹割掉(某鵝廠某ali,這一點上甚至不如很多獨立製作的app),尤其DEX模式的自定義比例窗口主要依靠的就是安卓應用的dpi自適應,而微信qq音樂某寶JD這些毒瘤直接給你閹割掉,整出各種奇葩問題(好消息是8.0版的微信似乎終於支持自適應dpi了,可喜可賀zxldm回來了)

看著好像還行的qq音樂小窗口

一全屏給你整成這樣

安卓平板值不值得買?我尋思還是值得的,雖然處理器性能比ipad pro差得遠,但實際上輕度的辦公修圖還是沒問題的。而且安卓平板現在標配的桌面模式加上無限制數量任意調整大小的小窗口,實際上帶來了更加接近傳統PC的體驗,接上滑鼠鍵盤那操作的效率簡直指數性提升 。再加上安卓端還有一些神級別的瀏覽器可以安裝桌面chrome的插件(比如kiwi,yandex,firefox,嗯還有錘子),直接大大提升了用平板瀏覽網頁的感受 。這些都是安卓本身的優點。說到桌面模式,我其實對錘子的TNT也很感興趣,特別是最近發現錘子的瀏覽器竟然支持了桌面chrome插件,可惜錘子無了,以後可能也不會再有人接盤了。

那麼iPad呢?iPad OS在我的感覺來看,就是想要在iOS的基礎上拓展多任務處理能力,但做的實在一言難盡...讓人感覺蘋果就是不想把正經的macOS或者一個閹割版的macOS桌面模式放到iPad OS里 。假如iPad Pro能夠一插顯示器或者一接鍵鼠直接啟動macOS,那還不直接香爆? 這生產力不比現在的iPad OS強?論A14的能力運行macOS輕輕鬆鬆吧?希望蘋果和安卓能夠繼續互相借鑒,無論是iPad也好安卓平板也好,其實在生產力上還大有可為,在輕度應用上取代傳統筆記本幾乎就在肉眼可見的未來。

⑥ 《Android程序設計Android程序設計》pdf下載在線閱讀,求百度網盤雲資源

《Android程序設計》(Zigurd Mednieks)電子書網盤下載免費在線閱讀

鏈接:https://pan..com/s/1AbudOHIhnJ5-KQH-jLNBYw

提取碼:7bx5

書名:Android程序設計

作者:Zigurd Mednieks

譯者:祝洪凱

出版社:機械工業出版社華章公司

出版年份:2013-3-1

頁數:456

內容簡介:

如何才能構建設計良好的Android應用?通過本書提供的權威指南,深入探索Android核心模塊及其API,了解如何創建可以運行在一系列Android設備上的出色的應用軟體。本書將帶你探索行之有效的應用設計和實施方式,包括一些應用框架,你可以把這些框架作為自己項目的起始點。

深入感測器、本地開發、3D圖形和許多其他主題,並發現如何在選擇的平台上構建應用程序。如果你要進階到高級程序員,你將學會如何創建良好的Android應用程序。

作者簡介:

Zigurd Mednieks是領先的OEM、企業和創建基於Android系統的創業投資顧問。

Laird Dornin是一家大型無線運營商的高級工程師,在Java、Android、J2ME、SavaJe和WebKit方面有豐富的經驗。

G.Blake Meike是一位經驗豐富的開發人員,為移動和服務端平台構建Java應用有豐富的經驗。

Masumi Nakamura是Where Inc.的Big Data和Recommendations組的首席架構師。

⑦ android怎麼和支付寶實現介面對接

可以在支付寶開放平台下載Android SDK對接文檔,地址: https://openhome.alipay.com/doc/docIndex.htm 希望對你有用

⑧ Android上生成word或者pdf,有開源的api么

Android上生成word或者pdf,有開源的api么?思路有兩個:

1、通過jni調用 ms word com介面 生成pdf

2、使用openoffice生成pdf

從生成的質量來看,第一種效果好,畢竟是微軟自家產品。第二種對於普通的文檔,轉換基本沒什麼問題,但是在對於word文檔里有公式式或特殊內容,轉換出來會變形。下面的代碼是使用
Jacob轉換的 代碼有點長:我整理的文章:itate-動態-文章《Android上生成word或者pdf,有開源的api么?》

閱讀全文

與androidapipdf相關的資料

熱點內容
朋友賣房要解壓嗎 瀏覽:107
sar命令安裝 瀏覽:167
安卓怎麼看我自己去過哪裡 瀏覽:283
演算法分析里log沒有底數嗎 瀏覽:221
伺服器卡頓怎麼連接 瀏覽:957
手機拍照文件夾自動生成 瀏覽:787
瀏覽器如何運行在伺服器端 瀏覽:790
collinux 瀏覽:449
日本歐美韓國推理片電影大分享 瀏覽:615
怎麼下載香港app游戲 瀏覽:217
加密貨幣或迎來新的上漲趨勢 瀏覽:827
電腦桌面的文件夾怎麼發的 瀏覽:194
linuxkangle 瀏覽:150
程序員負債 瀏覽:154
怎麼把解壓的游戲放到桌面上 瀏覽:981
文件夾不存在刪除不了怎麼辦 瀏覽:835
android關機命令行 瀏覽:152
網易雲伺服器支持接入什麼功能 瀏覽:649
編程器用法hpz420 瀏覽:160
日本巨胸奶大電影 瀏覽:210