1. 程式人生 > >PDFium-PDF開源之旅(1)-初探程式碼下載編譯

PDFium-PDF開源之旅(1)-初探程式碼下載編譯

近日,Google和Foxit合作開源了Foxit的PDF原始碼。叫PDFium

相關新聞不少,哈,雖說已經不是程式設計師了,不過還是有興趣跑起來圍觀看看。廢話少說,先說編譯程式碼的步驟(其實Google的網站上都有,純屬翻譯):

環境準備:

1.  我安裝的環境是vs2010

2.  預先安裝好Python, SVN, Git

獲取程式碼:

我準備把程式碼儲存在“E:\project\code\openpdf\”下,

1.獲取PDF原始碼

開啟命名行輸入:

git clone https://pdfium.googlesource.com/pdfium

cd pdfium

這樣PDF原始碼就下載好了,不過這是不夠的,還需要下再其他的一些工程才可以

2.首先要下載的就是GYP,這個是用於生成各個平臺的工程檔案的工具(所有的工程檔案都是通過GYP和gypi的檔案生成的)

svn co http://gyp.googlecode.com/svn/trunk build/gyp

3.  V8 JavaScript引擎的下載(開源的部分提供了PDF的填表功能,所以用到了JavaScript引擎)

svn co http://v8.googlecode.com/svn/trunk v8

4.  ICU下載,V8又依賴於ICU庫,所以繼續下載吧

svn co https://src.chromium.org/chrome/trunk/deps/third_party/icu46 v8/third_party/icu

5. 最後就是Cygwin的獲取啦(Windows Only),主要是用於生成V8的一些原始檔

svn co http://src.chromium.org/svn/trunk/deps/third_party/[email protected] v8/third_party/cygwin

生成Build檔案

就是用於生成工程檔案,Google的伺服器上是沒有直接存放工程檔案的,是通過gyp檔案生成各個平臺的工程檔案。

網上說明的生成工程檔案的步驟是:

Windows平臺:

build\gyp_pdfium

其他平臺:

build/gyp_pdfium

我在windows平臺上,直接雙擊執行gyp_pdfium.py這個檔案,就自動生成了。如下圖:


至此,程式碼就完全準備好了。

可以開始編譯,並一睹為快啦:

最上層的介面就是在fpdfsdk這個工程,可以開始研究啦!更多內容待續。。。。。。

另外,如果有需要也可以試試Foxit的官方SDK: Foxit SDK

原創作品,轉載請註明出處。

不少人程式碼下載不下來,這裡提供一個我下載好的程式碼:

http://pan.baidu.com/share/link?shareid=224438671&uk=3405782395

工程檔案需要自己生成哦,體積有點大,主要是包含了v8,icu的程式碼,還有就是svn的檔案...

相關推薦

PDFium-PDF開源(1)-初探程式碼下載編譯

近日,Google和Foxit合作開源了Foxit的PDF原始碼。叫PDFium 相關新聞不少,哈,雖說已經不是程式設計師了,不過還是有興趣跑起來圍觀看看。廢話少說,先說編譯程式碼的步驟(其實Google的網站上都有,純屬翻譯): 環境準備: 1.  我安裝的環境是vs2

PDFium-PDF開源(2)——執行除錯pdfium自帶的測試程式

PDFium-PDF開源之旅(2) ——執行除錯PDFium自帶的測試程式 趁熱打鐵週末,總算有時間繼續啦。廢話少說,切入正題. 編譯執行pdfium_test.exe 下載程式碼之後,原想直接寫個Demo,認真看了工程,PDFium是有自帶一個測試程式的,叫pdfium_

Hash-retrieval復現(1)------------------------------malti-label 多標籤影象的檢索程式碼復現

本文參考論文是arxiv2015的關於多標籤檢索的論文Deep Semantic Ranking Based Hashing for Multi-Label Image Retrieval,作者 Fang Zhao   Yongzhen Huang    Li

C#多線程(1)——介紹和基本概念

隔離 cnblogs 影響 3-0 同時 ima 並行 logic mes 閱讀目錄 一、多線程介紹 二、Join 和Sleep 三、線程怎樣工作 四、線程和進程 五、線程的使用和誤用 原文地址:C#多線程之旅(1)——介紹和基本概念 C#多線程之旅目錄: C#

微軟與Node.js的開源

支持 全球 tro 更多 工具和平臺 .cn 我們 images tell 微軟近年來在開源領域可謂是大刀闊斧的前進中,繼2015年微軟與紅帽合作,微軟智能雲Azure與Linux進一步融合等舉措之後,2016年,微軟繼續加大開源之舉,大力推進Node.js的開發和開源社區

Android開發1:環境搭建及HelloWorld

lan 及其 其它 ply 新項目 bsp 驗證 for 對話框 ——工欲善其事必先利其器 引言 本系列適合0基礎的人員,因為我就是從0開始的,此系列記錄我步入Android開發的一些經驗分享,望與君共勉!作為Android隊伍中的一個新人的

python 1-29 補充內容,深淺copy

abc 相同 多少 刪除列 cti aec 保持 mage amp # l1 = [111,222,333,444,555] 將索引為奇數位的元素刪除. # l1 = [111,222,333,444,555] # del l1[1::2] # print(l1)

java學習-1

ava 什麽 不用 補碼 void ret 負數 類型 是什麽 學了java差不多兩天了,要說和C語言的區別嘛,還是有很多的,但不得不說,先學了C語言再學其他的語言真的有很大幫助。首先呢,先看看java和C語言的基本格式吧。java的格式: public class De

[Python3填坑]1、urllib模組網頁爬蟲訪問中文網址出錯

正在學習網頁爬蟲,用的Python3+urllib模組,當遇到連結裡有中文字元的時候總是報錯。之前以為是Python編碼的問題,不斷去嘗試不同的編碼去encode與decode,可以問題總是解決不了,沒有辦法繼續查閱資料,最後發現其實解決方法特別簡單。 問題描述 當我訪問帶有中文

架構必經路2 - 熔斷機制 架構1 - 扣減庫存

架構之旅1 - 扣減庫存 架構之旅2 - 熔斷機制   專案中要做一個熔斷機制,預防對第三方的介面呼叫壓力太大。下面我介紹下專案中用到的熔斷機制。 一、熔斷機制   1.熔斷檢測機制 (1)請求call到backend後,首先判

【Linux-1】VMware虛擬機器中的Centos和windows共享資料夾

一、開啟虛擬機器,進入安裝好的centos系統,點選VM頂部導航欄中的“虛擬機器”按鈕,進入子選單選擇“安裝VMware Tools”,如下圖(我的已安裝過,因此顯示的是重新安裝) 二、在cent

菜鳥的微服務(1)---認識微服務(下)

上文我們瞭解了為什麼微服務架構思想會出現,以及闡述了關於微服務的優缺點。 那本文我們繼續來了解關於微服務的東西。 首先,我們需要知道的是微服務架構和SOA有什麼區別呢?     前文我們提及SOA是通過將整體服務分成子系統,在開發過程中還是避免不了專案的臃腫導致的種種弊

架構1

生活中,我們總是用各種電商app搶購商品,但是庫存數是很少的,特別是秒殺場景,商品可能就一件,那如何保證不會出現超賣的情況呢? 一、扣減庫存的三種方案 (1)下單減庫存   使用者下單時減庫存   優點:實時減庫存,避免付款時因庫存不足減庫存的問題   缺點:惡意買家大量下單,將

Android外掛化技術 1 開篇 - 實現啟動外掛與呼叫外掛中的Activity和Service

前言 Android技術如今已很成熟了,元件化、外掛化、熱修復等等框架層出不窮,如果只停留在單純的會用框架上,技術永遠得不到成長,只有懂得其原理,能夠婉婉道來,能夠自己手動寫出,技術才會得到成長,與其焦慮未來,不如把握現在。本篇將手寫教大家寫出外掛化框架,外掛化技術是Android高階工程師必備的技術之一,

Html5學習(1)

開始~~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l

Linux下PHP開發-1.開發環境搭建

一.下載相關安裝包 從官網:https://www.apachefriends.org/download.html 下載對應版本的安裝包,由於學的版本為5.5,選擇5.6版本安裝包  二.執行安裝 由於下載的檔案直接就是xampp-linux-x64-5.6.39-0-i

如何開始你的 SOHO (1)

仔細算算自己在家上班已經有差不多4年了,所以回想起整個過程,只有一種感受,那就是再也回不去了。我相信很多在家工作多年的朋友也會有同樣的感受,“自由”這東西一旦擁有就太難再放棄掉。 我現在無法想象我每天要在上下班的路上耽擱1-2個小時,每天要準時一大早起床,每週無論有

Java學習1

1.圓角按鈕的設定 import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics;

【SQL進階】03.執行計劃1

聽到大牛們說執行計劃,總是很惶恐,是對知識的缺乏的惶恐,所以必須得學習執行計劃,以減少對這一塊知識的惶恐,下面是對執行計劃的第一講-理解執行計劃。 本系列【T-SQL】主要是針對T-SQL的總結。   一、為什麼需要執行計劃? (1)幫助分析 當我們想要去分析SQL語句存在很慢時,需要有一個

Web效能探索-1.無線網路基礎

一、無所不在的連線 針對不通的使用場景,無線網路技術有很多種。 鑑於無線網路技術如此多樣,籠統地概括所有無線網路的效能優化手段是不可能的。好在大多數無線技術的原理都是相通的,衡量效能的指標和約束條件也具有普遍實用性。只要把影響無線效能的基本原理搞清楚,那其他問題自然也就迎刃而解了。 二、無線網路的效能基