Pdfbox、Icepdf和JPedal三個PDF提取器的比較
由於專案中要實現提取PDF文件的一些圖片和文字資訊,所以花了很多時間去研究這三個元件。
第一個接觸的是pdfbox,確實能提取頁面的圖片和內部圖片,頁面圖片使用page.convertToImage方法,內部的圖片提取需要繼承PDFStreamEngine,提取文字也可以通過PDFTextStripper來獲取,但是pdfbox比較悲劇的地方是一些type1字型的文件不支援,無法解析或者亂碼;
於是我又試了icepdf,同樣也能提取圖片和文字,但是對於type1的字型,icepdf提供了字型引擎,不過是商用版才有,需要付費購買,網上能下到一個ICEpdf-pro-4.3.2-bin裡有擴充套件包,雖然能直接使用,可是版本太低,有些bug由於沒有原始碼,暫時無法解決;
再試JPedal,提取出了頁面圖片和內部圖片,但是一直沒實現提取文字座標資訊,就此作罷,可能對於每一個開發者的需要不一樣,但是我還沒找到符合自己的東西!
相關推薦
Pdfbox、Icepdf和JPedal三個PDF提取器的比較
由於專案中要實現提取PDF文件的一些圖片和文字資訊,所以花了很多時間去研究這三個元件。 第一個接觸的是pdfbox,確實能提取頁面的圖片和內部圖片,頁面圖片使用page.convertToImage方法,內部的圖片提取需要繼承PDFStreamEngine,提取文字也可以通
after、append和appendTo三個函數的區別
after bsp text str rep 區別 實例 用法 tle jq文檔的說明是 1、after函數 定義和用法: after() 方法在被選元素後插入指定的內容。 語法: $(selector).after(content) 實例: <html><
最牛乾貨 :解讀產品、運營和資料三個基友關係
曾經被問到產品和運營的關係。 網路上有很多答案:比如產品經理負責把產品生下來,運營負責把它養大;比如共穿一條褲子的好基友,等等。 在我看來,兩者是不分割彼此的。可能初級的產品策劃和產品運營(包括其他運營)因為崗位工作內容的不同,具有挺大的差別。隨著兩者段位
Unity3d Camera的Clear Flags、Culling Mask和Depth三個屬性的理解
先說說 Clear Flags: Skybox:把顏色緩衝設定為天空盒,並完全清空深度緩衝 Solid:和天空盒一樣,只是把顏色緩衝設定為純色 Depth only:這個選項會保留顏色緩衝,但會清空深度緩衝 Don’t Clear:不清除任何緩衝 這個
javascript中不易分清的slice,splice和split三個函數
也會 www d參數 keyword str pac 說明 截取 tab 1.slice(數組) 用法:array.slice(start,end) 解釋:該方法是對數組進行部分截取,並返回一個數組副本;參數start是截取的開始數組索引,end參數等於你要取的最後一個字符
用華為eNSP模擬器配置Hybrid、Trunk和Access三種鏈路類型端口
acc 數據包 相互 子網劃分 幫助 system-v 兩個 5.0 能夠 上一篇文章寫到三層交換機實現多個VLAN之間互相通訊,有朋友提問要如何進行配置,可有案例分析。其實那天我在寫的時候也有做過模擬,只是後來沒有保存。今天重新模擬一次,並附上詳細配置命令,希望能夠幫
Apache Prefork、Worker和Event三種MPM分析
更多 可用 make ret 負載 install 插入 mic per 三種MPM介紹 Apache 2
Linux程序狀態解析 之 R、S、D、T、Z、X (主要有三個狀態)
linux是一個多使用者,多工的系統,可以同時執行多個使用者的多個程式,就必然會產生很多的程序,而每個程序會有不同的狀態。 Linux程序狀態:R (TASK_RUNNING),可執行狀態。 只有在該狀態的程序才可能在CPU上執行。而
php中curl、fsocket、file_get_content三個函式的使用比較
php中curl和file_get_content的一些比較 主要區別: 學習才發現,curl支援很多協議,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是說,它能做到很多file_get_content做不到的事情。
matlab生成隨機數的rand、randi和randn三種形式
matlab中關於隨機數的產生有3種庫函式,下面我們來看看它們的形式: 1、rand(…) 它是生成0~1之間(開環,不包含0和1兩個數)均勻分佈的偽隨機數,也就是無窮次試驗其中每個數產生的概率是一樣的。 它的函式格式如下: <span sty
如何在不借助其他函式和第三個變數的情況下,更換兩個變數的值?
如題,這是一個有趣的小題目。具體方法如下: ▍方法一 var a = 3; var b = 4; a = a + b; // 7 b = a - b; // 3 a = a - b; /
DAS、SAN和NAS三種伺服器儲存方式
一、儲存的分類 根據伺服器型別分為:封閉系統的儲存和開放系統的儲存, 封閉系統主要指大型機, 開放系統指基於Windows、UNIX、Linux等作業系統的伺服器; 開放系統的儲存分為: 內建儲存 外掛儲存 外掛儲存根據連線的方式分為: 直連式儲存
解讀x86、ARM和MIPS三種主流晶片架構
指令集可分為複雜指令集(CISC)和精簡指令集(RISC)兩部分,代表架構分別是x86、ARM和MIPS。 ARMRISC是為了提高處理器執行速度而設計的晶片體系,它的關鍵技術在於流水線操作即在一個時鐘週期裡完成多條指令。相較複雜指令集CISC而言,以RISC為架構體
Http長連線、短連線、持久連線這三個概念的分析總結
什麼是Http長連線 長連線定義: client方與server方先建立連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在。此種方式常用於P2P點對點的通訊。 長連線的操作步驟是:建立連線——資料傳輸...(保持連線)...資料傳輸——關閉
Oracle、Vertica和Hive三種資料庫查詢表空間的方法
最近在工作中碰到了查詢Oracle、Vertica和Hive表空間的需求,整理如下: IDE分類: Oracle—PLSQL DEVELOPER; Vertica—DBVisualizer; Hive—SecureCRT; 資料庫分類: O
ubuntu18.04 搭建hadoop完全分散式叢集(Master、slave1、slave2)共三個節點
一、硬體配置以及作業系統: 所需要的機器以及作業系統:一臺mac os筆記本、一臺window筆記本(CPU雙核四執行緒,記憶體8G),其中mac os用於遠端操作,window筆記本裝有虛擬機器,虛擬出3個ubuntu18.04系統(配置CPU1個執行緒2個,記憶體1.5G,硬碟分配每個7
Access、Hybrid和Trunk三種模式的理解
乙太網埠的三種鏈路型別:Access、Hybrid和Trunk Access型別的埠只能屬於1個VLAN,一般用於連線計算機的埠; Trunk型別的埠可以允許多個VLAN通過,可以接收和傳送多個VLAN的報文,一般用於交換機之間連線的埠; Hybrid型別
php中print_r、var_dump和var_export幾個函式的用法區別 。php setcookie一些限制。php不同路徑cookies取值問題。PHP獲取站點根目錄
php中print_r、var_dump和var_export幾個函式的用法區別 print_r ( $array/$var ) print 是列印的意思,而r則取自Array的單詞,那麼該函式的功能就是列印陣列內容,它既可以列印陣列內容,也可以列印普通的變數
Linux中find命令和檔案三個時間簡介
在Linux中在終端上輸入命令stat +檔名 例如: 其中Access是該檔案中資料最後被訪問時間,比如被系統程序直接使用或者通過一些命令和指令碼間接使用。 Modity顯示的是檔案內容被改變時
JS設定cookie、讀取cookie、刪除cookie的三個方法
JavaScript是執行在客戶端的指令碼,因此一般是不能夠設定Session的,因為Session是執行在伺服器端的。 而cookie是執行在客戶端的,所以可以用JS來設定cookie. 假設有這樣一種情況,在某個用例流程中,由A頁面跳至B頁面,若在A頁