『壹』 製作安卓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閱讀器有哪些
可編輯的PDF閱讀器推薦使用風雲pdf閱讀器,擁有完整的PDF編輯功能,輕松搞定PDF文檔閱讀、編輯、 注釋、轉換等眾多實用功能,操作簡單,效率更高,功能豐富且實用,可以PDF細節調整,使用場景廣泛!
功能介紹:
1、風雲PDF閱讀器提供PDF審閱功能,可以對文件添加批註。
2、可以在查看工程合同的時候添加批註。
3、可以在查看工程造價書的時候添加標注。
4、提供豐富的編輯功能,可以直接添加文本內容,可以添加圖形內容, 可以添加圖章。
5、可以在文本任意位置標記,也可以對段落內容加密。
6、支持簽名設置,如果審核通過就可以添加數字簽名。
7、提供頁眉頁腳設置功能,在軟體界面立即設置輸入頁腳文字。
8、支持水印設置功能,可以對當前的工程合同設置水印。
9、支持頁面修改功能,可以刪除多餘的頁面,可以插入新的頁面。
10、提供展平注釋、匯總注釋、導入注釋、顯示注釋、顯示注釋列表等功能。
操作步驟如下:
1、打開瀏覽器搜索「風雲PDF閱讀器」然後點擊下載。
2、安裝好之後打開閱讀器,然後點擊需要閱讀的pdf文件打開。
3、文件打開之後點擊「文檔」就可以直接進行文件的閱讀和編輯了。
下載鏈接:風雲pdf編輯器。
『叄』 福昕閱讀器怎麼把多張照片轉為pdf
1、安裝福昕PDF閱讀器,安裝時把福昕PDF虛擬列印機勾選上。系統出現福昕PDF虛擬列印。
2、選中要製作PDF文件的圖片。
3、在上步驟游兄選中的圖片中圖標上右擊,彈出快捷菜單。選擇「列印」。彈出「列印圖片對話框」。
4、在彈出「列印圖片對話框」中列印機選擇「Foxit Reader PDF Printer」也就是早鋒福昕PDF虛擬列印機。
5、單擊「列印圖片對話框」中的「列印」神睜襲。
6、在彈出對話框,選擇要保存的目錄,然後單擊」保存「。開始把圖片列印成Pdf格式。
7、打開剛製作的PDF文件,可以看到前面選的5張圖片已經合成1個PDF文件。
『肆』 PDF要怎麼製作啊
PDF格式文件的製作
----現在可以利用許多種工具來製作PDF格式文件,例如MicrosoftPublisher和AdobePageMaker等,但是用AdobeAcrobat最有效、可靠和便捷。Windows95/98下安裝AdobeAcrobat3.0後,可按以下典型過程創建PDF文件:
----1.將應用程序以PostScript形式存放在磁碟中;
----2.執行"開始"*"程序"*"AdobeAcrobat"*"AdobeAcrobatDistiller3.0";
----3.找到並打開所創建的運李PostScript文件;
----4.確定好位置並將該文件(原擴展名為ps)保存為PDF格式;
----5.用Acrobat的PDF閱讀器(如AcrobatReader或AcrobatExchange)打開創建的PDF文件。
----為減少以上步驟以提高效率,在Acrobat3.0中還包括有一個工具AcrobatDistillerAssistant。在一個應用程序內部,它主要起到兩方面的作用:
----1.列印機控制面板里的列印驅動程序;
----2.AcrobatDistiller和Acrobat閱讀器之間的界面。
----這樣用戶就可以將一個文檔列印到該工具中,它會替您自動完成包括創建PostScript文件、啟動AcrobatDistiller,並且將應用文檔轉化為PDF格式,以及打開Acrobat的PDF閱讀器等其他任務。為保證隨時使用DistillerAssistant,它可設在"啟動"菜單下。
----Adobe公司還提供了一個工具,它可使您在MSWord中直接將文檔按用戶的要求自動轉化為PDF文件。
----把PDFMaker安裝後,當運行MSWord97時,便會在"File"菜單里出現一個者悄悄新的項"CreateAdobePDF"(內含兩個子項),這就在Word中可將編輯完成的文檔轉化為PDF格式。同時還可以通過選取"File"*"CreateAdobePDF"*"Preference",來對PDF文件轉化過程中的某些參數進行必要的設定,以達到所要求的效果。而要真正實現這些功能,還需要有PDFWriter3.0(或更高)列印驅動程序與AcrobatDistiller3.0(或更高)的配合才能首渣完成。這兩項內容包含在AdobeAcrobat3.0中,通過將其安裝才能獲得。另外,PDFWriter的特點是可將一般文檔快速地直接轉換為PDF格式,但PDFMaker中的其他一些功能如書簽、超鏈接和注釋等高級特徵,卻因此不能被完全地保留下來;而Distiller則是通過先將Word文檔列印為一個PostScript文件,然後再"提取"這種擴展名為ps的文件內容製成PDF文件,它可仍然保存那些在文檔編輯和Internet中廣泛使用的高級功能。另外,由於在MSWord97中使用的宏語言不同於老版本Word中的宏,所以PDFMaker不能用於Word6.0中。
----還應當注意的是,為建立PostScript文件,DistillerAssistant必須使用一個真正的PostScript列印驅動程序,例如MicrosoftPostScript列印驅動或AdobePostScript列印驅動(AdobePS)等。因為DistillerAssistant在創建PDF過程中不僅要使用有關PDF內容的選擇,同時也要使用列印驅動程序的一些選擇內容。
----因此,AdobeAcrobat3.0是基本的,只要能夠列印成PostScript文件(即安裝有PostScript列印驅動),就可以在應用程序中通過將列印選擇命令設置為DistillerAssistant(或者AcrobatDistiller3.0),製作出相應的PDF格式文件來,而不一定像在MSWord97中那樣,通過安裝PDFMaker在"File"菜單里生成專門的"CreatAdobePDF"項。例如,在MSExcel和MSPowerPoint等應用軟體中,也完全可以製作出相應樣式的PDF文件來。老大,不用製作吧,保存的時候保存格式選成PDF就可以了。
『伍』 製作安卓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。
『陸』 怎麼利用福昕閱讀器把多個WTF文件做成一個PDF文件
1、首先用軟體打開要編輯的PDF文件,然後點擊「特色功能」--「PDF編輯工具」。
『柒』 電腦上看,pdf文件用什麼軟體好
下載閱讀器打開PDF文件:
1、Adobe acrobat和Adobe Reader
2、福昕PDF閱讀器
3、極速卜液梁PDF閱讀器
4、PDF閱讀器綠色版
5、克克PDF閱讀器
6、foxit reader
7、SmartPDF閱讀器等型運
以上閱讀器都可以,但是Adobe acrobat較普遍,而且很多軟體跟這埋數個也是兼容的。
『捌』 Foxit Reader(福昕PDF閱讀器) 怎麼製作pdf文件
首先判斷你的PDF文件性質:掃描得到的PDF文件, PDF軟體直接製作的文件。
軟體:ADOBE READER, Foxit Reader(福昕PDF閱讀器)
我用的是FOXIT,下載FOXIT編輯器(注意,如果只下載閱讀器,不帶編輯功能)
以上兩種PDF都可以用直接插入文字的方法,如圖:圖片中,右上角的T,就是輸入文字的地方。輸入後會自動出現在PDF文檔左上角,拖動調整位置就可以了。
如果你的PDF是直接可編輯的,那麼用閱讀器就可以編輯。
如有疑問,在線找我。
『玖』 Foxit Reader(福昕PDF閱讀器) 怎麼製作pdf文件
可以試下Foxit Phantom,這款滾輪軟體只大銷信有9M,PDF功能很全面。官網下載地址是: http://www.fuxinsoftware.com.cn/downloads/ 安裝完成後,最簡單製作PDF文檔的方法就是先在Word裡面編輯好你要的文檔,然後再選擇「文件/列印」即可通過Foxit Phantom Printer將斗坦文檔轉換為PDF格式。此外還可以用這款軟體對現有的PDF文檔做編輯操作。
『拾』 Adobe reader PDF是什麼軟體
首先 你問的問題有兩個含義,可能連你自己都不知道:
第一,adobe reader 是一款軟體,Adobe Reader(也被稱為Acrobat Reader)是美國Adobe公司開發的一款優秀的PDF文件閱讀軟體。文檔的撰寫者可以向任何人分發自己製作(通過Adobe Acobat製作)的PDF文檔而不用擔心被惡意篡改。
Reader 是用於打開和使用在 Adobe Acrobat 中創建的 Adobe PDF 的工具。 雖然無法在 Reader 中創建 PDF,但是可以使用Adobe Reader查看、列印和管理 PDF。在 Reader 中打開 PDF 後,可以使用多種工具快速查找信息。如果您收到一個 PDF 表單,則可以在線填寫並以電子方式提交。如果收到審閱 PDF 的邀請,則可使用注釋和標記工具為其添加批註。使用 Reader 的多媒體工具可以播放 PDF 中的視頻和音樂。如果 PDF 包含敏感信息,則可利用數字身份證對文檔進行簽名或驗證。
簡單的說,reader就是一款專門用來打開PDF文檔格式的軟體。
第二,關於PDF,PDF全稱Portable Document Format,譯為可移植文檔格式,是一種電子文件格式。這種文件格式與操作系統平台無關,也就是說,PDF文件不管是在Windows,Unix還是在蘋果公司的Mac OS操作系統中都是通用的。同時PDF還有多種英文縮寫的含義。
PDF全稱Portable Document Format,譯為可移植文檔格式,是一種電子文件格式。這種文件格式與操作系統平台無關,也就是說,PDF文件不管是在Windows,Unix還是在蘋果公司的Mac OS操作系統中都是通用的。這一性能使它成為在Internet上進行電子文檔發行和數字化信息傳播的理想文檔格式。越來越多的電子圖書、產品說明、公司文告、網路資料、電子郵件開始使用PDF格式文件。PDF格式文件目前已成為數字化信息事實上的一個工業標准。
PDF從本質上說,也是一種格式,但因為更方便,更快捷,更靈活,所以更通用。
朋友,所以說,reader 是一款專門閱讀PDF文檔格式的軟體,PDF則是一種專門的電子文件格式。