Ⅰ 《Web之困:現代Web應用安全指南》pdf下載在線閱讀,求百度網盤雲資源
《Web之困:現代Web應用安全指南》(美)MichalZalewski電子書網盤下載免費在線閱讀
鏈接:
提取碼:5n1m
書名:Web之困:現代Web應用安全指南
作者名:(美)MichalZalewski
豆瓣評分:8.6
出版社:機械工業出版社
出版年份:2013-10
頁數:280
內容介紹:
《web之困:現代web應用安全指南》在web安全領域有「聖經」的美譽,在世界范圍內被安全工作者和web從業人員廣為稱道,由來自google chrome瀏覽器團隊的世界頂級黑客、國際一流安全專家撰寫,是目前唯一深度探索現代web瀏覽器安全技術的專著。本書從瀏覽器設計的角度切入,以探討瀏覽器的各主要特性和由此衍生出來的各種安全相關問題為主線,深入剖析了現代web瀏覽器的技術原理、安全機制和設計上的安全缺陷,為web安全工作者和開發工程師們應對各種基於瀏覽器的安全隱患提供了應對措施。
作者介紹:
國際一流信息安全技術專家,被譽為IT安全領域最有影響力的11位黑客之一。曾發現過數以百計的網路安全漏洞,並發表了多篇具有重大影響的研究論文。對現代Web瀏覽器有非常深入的研究,目前就職於Google,基於其在Web安全方面的豐富經驗幫助Google增強包括Chrome瀏覽器在內的一系列產品的安全性。此外,他還是一位開源軟體貢獻者,是著名開源軟體p0f、skipfish、ratproxy等的開發者。
Ⅱ Web工程師你知道如何構建單頁Web應用嗎
今天小編要跟大家分享的文章是關於Web工程師你知道如何構建單頁Web應用嗎?正在從事web相關工作的小夥伴們你們是否知道什麼是單頁面應用,是否知道該如何構建單頁面web應用?下面
就來和小編一起來看一看吧!
首先我們來看一看單頁應用是什麼?
所謂單頁應用,指的是在一個頁面上集成多種功能,甚至整個系統就只有一個頁面,所有的業務功能都是它的子模塊,通過特定的方式掛接到主界面上。它是AJAX技術的進一步升華,把AJAX的無刷新機制發揮到極致,因此能造就與桌面程序媲美的流暢用戶體驗。
其實單頁應用我們並不陌生,很多人寫過ExtJS的項目,用它實現的系統,很天然的就已經是單頁的了,也有人用jQuery或者其他框架實現過類似的東西。用各種JS框架,甚至不用框架,都是可以實現單頁應用的,它只是一種理念。有些框架適用於開發這種系統,如果使用它們,可以得到很多便利。
一、開發框架
ExtJS可以稱為第一代單頁應用框架的典型,它封裝了各種UI組件,用戶主要使用JavaScript來完成整個前端部分,甚至包括布局。隨著功能逐漸增加,ExtJS的體積也逐漸增大,即使用於內部系統的開發,有時候也顯得笨重了,更不用說開發以上這類運行在互聯網上的系統。
jQuery由於偏重DOM操作,它的插件體系又比較鬆散,所以比ExtJS這個體系更適合開發在公網運行的單頁系統,整個解決方案會相對比較輕量、靈活。
但由於jQuery主要面向上層操作,它對代碼的組織是缺乏約束的。如何在代碼急劇膨脹的情況下控制每個模塊的內聚性,並且適當在模塊之間產生數據傳遞與共享,就成為了一種有挑戰的事情。
為了解決單頁應用規模增大時候的代碼邏輯問題,出現了不少MV*框架,他們的基本思路都是在JS層創建模塊分層和通信機制。有的是MVC,有的是MVP,有的是MVVM,而且,它們幾乎都在這些模式上產生了變異,以適應前端開發的特點。
這類框架包括Backbone,Knockout,AngularJS,Avalon等。
二、組件化
這些在前端做分層的框架推動了代碼的組件化,所謂組件化,在傳統的Web產品中,更多的指UI組件,但其實組件是一個廣泛概念,傳統Web產品中UI組件佔比高的原因是它的厚度不足,隨著客戶端代碼比例的增加,相當一部分的業務邏輯也前端化,由此催生了很多非界面型組件的出現。
分層帶來的一個優勢是,每層的職責更專一了,由此,可以對其作單元測試的覆蓋,以保證其質量。傳統UI層測試最頭疼的問題是UI層和邏輯混雜在一起,比如往往會在遠程請求的回調中更改DOM,當引入分層之後,這些東西都可以分別被測試,然後再通過場景測試來保證整體流程。
三、代碼隔離
與開發傳統頁面型網站相比,實現單頁應用的過程中,有一些比較值得特別關注的點。
從單頁應用的特點來看,它比頁面型網站更加依賴於JavaScript,而由於頁面的單頁化,各種子功能的JavaScript代碼聚集到了同一個作用域,所以代碼的隔離、模塊化變得很重要。
在單頁應用中,頁面模板的使用是很普遍的。很多框架內置了特定的模板,也有的框架需要引入第三方的模板。這種模板是界面片段,我們可以把它們類比成JavaScript模塊,它們是另一種類型的組件。
模板也一樣有隔離的需要。不隔離模板,會造成什麼問題呢?模板間的沖突主要存在於id屬性上,如果一個模板中包含固定的id,當它被批量渲染的時候,會造成同一個頁面的作用域中出現多個相同id的元素,產生不可預測的後果。因此,我們需要在模板中避免使用id,如果有對DOM的訪問需求,應當通過其他選擇器來完成。如果一個單頁應用的組件化程度非常高,很可能整個應用中都沒有元素id的使用。
四、代碼合並與載入策略
人們對於單頁系統的載入時間容忍度與Web頁面不同,如果說他們願意為購物頁面的載入等待3秒,有可能會願意為單頁應用的首次載入等待5-10秒,但在此之後,各種功能的使用應當都比較流暢,所有子功能頁面盡量要在1-2秒時間內切換成功,否則他們就會感覺這個系統很慢。
從這些特點來看,我們可以把更多的公共功能放到首次載入,以減小每次載入的載入量,有一些站點甚至把所有的界面和邏輯全部放到首頁載入,每次業務界面切換的時候,只產生數據請求,因此它的響應是非常迅速的,比如青雲的控制台就是這么做的。
通常在單頁應用中,無需像網站型產品一樣,為了防止文件載入阻塞渲染,把js放到html後面載入,因為它的界面基本都是動態生成的。
當切換功能的時候,除了產生數據請求,還需要渲染界面,這個新渲染的界面部件一般是界面模板,它從哪裡來呢?來源無非是兩種,一種是即時請求,像請求數據那樣通過AJAX獲取過來,另一種是內置於主界面的某些位置,比如script標簽或者不可見的textarea中,後者在切換功能的時候速度有優勢,但是加重了主頁面的負擔。
在傳統的頁面型網站中,頁面之間是互相隔離的,因此,如果在頁面間存在可復用的代碼,一般是提取成單獨的文件,並且可能會需要按照每個頁面的需求去進行合並。
單頁應用中,如果總的代碼量不大,可以整體打包一次在首頁載入,如果大到一定規模,再作運行時載入,載入的粒度可以搞得比較大,不同的塊之間沒有重復部分。
五、路由與狀態的管理
我們最開始看到的幾個在線應用,有的是對路由作了管理的,有的沒有。
管理路由的目的是什麼呢?是為了能減少用戶的導航成本。比如說我們有一個功能,經歷過多次導航菜單的點擊,才呈現出來。
如果用戶想要把這個功能地址分享給別人,他怎麼才能做到呢?
傳統的頁面型產品是不存在這個問題的,因為它就是以頁面為單位的,也有的時候,服務端路由處理了這一切。
但是在單頁應用中,這成為了問題,因為我們只有一個頁面,界面上的各種功能區塊是動態生成的。所以我們要通過對路由的管理,來實現這樣的功能。
具體的做法就是把產品功能劃分為若干狀態,每個狀態映射到相應的路由,然後通過pushState這樣的機制,動態解析路由,使之與功能界面匹配。
有了路由之後,我們的單頁面產品就可以前進後退,就像是在不同頁面之間一樣。
其實在Web產品之外,早就有了管理路由的技術方案,Adobe
Flex中,就會把比如TabNavigator,甚至下拉框的選中狀態對應到url上,因為它也是單「頁面」的產品模式,需要面對同樣的問題。
當產品狀態復雜到一定程度的時候,路由又變得很難應用了,因為狀態的管理極其麻煩,比如開始的時候我們演示的c9.io在線IDE,它就沒法把狀態對應到url上。
六、緩存與本地存儲
在單頁應用的運作機制中,緩存是一個很重要的環節。
由於這類系統的前端部分幾乎全是靜態文件,所以它能夠有機會利用瀏覽器的緩存機制,而比如動態載入的界面模板,也完全可以做一些自定義的緩存機制,在非首次的請求中直接取緩存的版本,以加快載入速度。
甚至,也出現了一些方案,在動態載入JavaScript代碼的同時,把它們也緩存起來。比如Addy
Osmani的這個basket.js,就利用了HTML5localStorage作了js和css文件的緩存。
在單頁產品中,業務代碼也常常會需要跟本地存儲打交道,存儲一些臨時數據,可以使用localStorage或者localStorageDB來簡化自己的業務代碼。
七、服務端通信
傳統的Web產品通常使用JSONP或者AJAX這樣的方式與服務端通信,但在單頁Web應用中,有很大一部分採用WebSocket這樣的實時通訊方式。
WebSocket與傳統基於HTTP的通信機制相比,有很大的優勢。它可以讓服務端很便利地使用反向推送,前端只響應確實產生業務數據的事件,減少一遍又一遍無意義的AJAX輪詢。
由於WebSocket只在比較先進的瀏覽器上被支持,有一些庫提供了在不同瀏覽器中的兼容方案,比如socket.io,它在不支持WebSocket的瀏覽器上會降級成使用AJAX或JSONP等方式,對業務代碼完全透明、兼容。
八、內存管理
傳統的Web頁面一般是不需要考慮內存的管理的,因為用戶的停留時間相對少,即使出現內存泄漏,可能很快就被刷新頁面之類的操作沖掉了,但單頁應用是不同的,它的用戶很可能會把它開一整天,因此,我們需要對其中的DOM操作、網路連接等部分格外小心。
九、樣式的規劃
在單頁應用中,因為頁面的集成度高,所有頁面聚集到同一作用域,樣式的規劃也變得重要了。
樣式規劃主要是幾個方面:
1、基準樣式的分離
這裡面主要包括瀏覽器樣式的重設、全局字體的設置、布局的基本約定和響應式支持。
2、組件樣式的劃分
這裡面是兩個層面的規劃,首先是各種界面組件及其子元素的樣式,其次是一些修飾樣式。組件樣式應當盡量減少互相依賴,各組件的樣式允許冗餘。
3、堆疊次序的管理
傳統Web頁面的特點是元素多,但是層次少,單頁應用會有些不同。
在單頁應用中,需要提前為各種UI組件規劃堆疊次序,也就是z-index,比如說,我們可能會有各種彈出對話框,浮動層,它們可能組合成各種堆疊狀態。新的對話框的z-index需要比舊的高,才能確保蓋在它上面。諸如此類,都需要我們對這些可能的遮蓋作規劃,那麼,怎樣去規劃呢?
了解通信知識的人,應當會知道,不同的頻率段被劃分給不同的通信方式使用,在一些國家,領空的使用也是有劃分的,我們也可以用同樣的方式來預先分段,不同類型的組件的z-index落到各自的區間,以避免它們的沖突。
十、單頁應用的產品形態
我們在開始的時候提到,存在著很多新型Web產品,使用單頁應用的方式構建,但實際上,這類產品不僅僅存在於Web上。點開Chrome商店,我們會發現很多離線應用,這些產品都可以算是單頁應用的體現。
除了各種瀏覽器插件,藉助node-webkit這樣的外殼平台,我們可以使用Web技術來構建本地應用,產品的主要部分仍然是我們熟悉的單頁應用。
單頁應用的流行程度正在逐漸增加,大家如果關注了一些初創型互聯網企業,會發現其中很大一部分的產品模式是單頁化的。這種模式能帶給用戶流暢的體驗,在開發階段,對JavaScript技能水平要求較高。
單頁應用開發過程中,前後端是天然分離的,雙方以API為分界。前端作為服務的消費者,後端作為服務的提供者。
在此模式下,前端將會推動後端的服務化。當後端不再承擔模板渲染、輸出頁面這樣工作的情況下,它可以更專注於所提供的API的實現,而在這樣的情況下,Web前端與各種移動終端的地位對等,也逐漸使得後端API不必再為每個端作差異化設計了。
十一、部署模式的改變
在現在這個時代,我們已經可以看到一種產品的出現了,那就是「無後端」的Web應用。這是一種什麼東西呢?基於這種理念,你的產品很可能只需要自己編寫靜態Web頁面,在某種BaaS(Backend
asa
Service)雲平台上定製服務端API和雲存儲,集成這個平台提供的SDK,通過AJAX等方式與之打交道,實現注冊認證、社交、消息推送、實時通信、雲存儲等功能。
我們觀察一下這種模式,會發現前後端的部署已經完全分離了,前端代碼完全靜態化,這意味著可以把它們放置到CDN上,訪問將大大地加速,而服務端託管在BaaS雲上,開發者也不必去關注一些部署方面的繁瑣細節。
假設你是一名創業者,正在做的是一種實時協同的單頁產品,可以在雲平台上,快速定製後端服務,把絕大部分寶貴的時間花在開發產品本身上。
十二、單頁應用的缺陷
單頁應用最根本的缺陷就是不利於SEO,因為界面的絕大部分都是動態生成的,所以搜索引擎很不容易索引它。
十三、產品單頁化帶來的挑戰
一個產品想要單頁化,首先是它必須適合單頁的形態。其次,在這個過程中,對開發模式會產生一些變更,對開發技能也會有一些要求。
開發者的JavaScript技能必須過關,同時需要對組件化、設計模式有所認識,他所面對的不再是一個簡單的頁面,而是一個運行在瀏覽器環境中的桌面軟體。
以上就是小編今天為大家分享的關於Web工程師你知道如何構建單頁Web應用嗎?的文章,希望本篇文章能夠對正從事web前端工作的小夥伴們有所幫助。相信通過本篇文章的介紹大家已經對如何構建單頁面web應用有所了解了,想要了解更多web相關知識記得關注北大青鳥web培訓官網哦!
來源:https://github.com/xufei/blog/issues/5
*聲明:內容與圖片均來源於網路(部分內容有修改),版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
Ⅲ 《Web應用安全權威指南》pdf下載在線閱讀全文,求百度網盤雲資源
《Web應用安全權威指南》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1sfWvek_I2ZGjQTYj3POeEg
簡介:《Web應用安全指南》系日本Web安全德丸浩所創,是作者從業多年的經驗總結。作者首先簡要介紹了Web應用的安全隱患以及產生原因,然後詳細介紹了Web安全的基礎,如HTTP、會話管理、同源策略等。此外還重點介紹了Web應用的各種安全隱患,對其產生原理及對策進行了詳盡的講解。最後對如何提高Web網站的安全性和開發安全的Web應用所需要的管理進行了深入的探討。《Web應用安全指南》可操作性強,讀者可以通過下載已搭建的虛擬機環境親自體驗書中的各種安全隱患。
Ⅳ 如何設置pdf文件web快速查看
使用adobe acrobat pro8或9版本:
1。驗證現有的 PDF 是否啟用了快速 Web 查看 :
打開PDF,文件>屬性。查看「說明」面板的右下區域「快速Web 查看」設置(是或 否)。
2.在製作pdf之前:
編輯> 首選項> 種類>文檔 , 在對話框的右側「 保存設置」 下,確認選中" 另存為優化快速 Web 查看」 確定。
3。現有的 PDF 要啟用" 快速 Web 查看" 功能
如果第1檢查,沒有啟用該功能: 打開 PDF >文件>另存為。選擇相同的文件名和位置。 提示覆蓋已存在的文件, 確定。
另外這個功能需要伺服器支持,否則設置了也沒用,仍是全部打開才能web瀏覽。
Ⅳ 《機器學習web應用》pdf下載在線閱讀全文,求百度網盤雲資源
《機器學習web應用》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1X5whNGX7AYpMZ-xW5n6-lQ
簡介:機器學習web應用講解如何用Python語言、Django框架開發一款Web商業應用,以及如何用一些現成的庫和工具(sklearn、scipy、nltk和Django等)處理和分析應用所生成或使用的數據。本書不僅涉及機器學習的核心概念,還介紹了如何將數據部署到用Django框架開發的Web應用,包括Web、文檔和伺服器端數據的挖掘和推薦引擎的搭建方法。
Ⅵ 為什麼我的web瀏覽器不能看pdf文件呢
打開PDFReader,點開菜單「編輯」→「首選項」,在「網際網路」的瀏覽器選項中選中「在瀏覽器中顯示PDF、允許快速WEB查看」
Ⅶ 電腦升級後pdf文件為什麼要在web網頁中打開
重新設置下默認打開方式就行了。步驟如下:
1、在PDF文件上右鍵--打開方式---選擇默認程序
2、選擇PDF打開軟體,然後把下圖紅圈裡的對號點上,點確定。
Ⅷ pdf的文件怎樣用web打開
下個Adobe Reader 9.0 http://www.gougou.com/search?search=Adobe%20Reader%209.0&restype=-1&id=10000001&ty=0&pattern=0
Ⅸ 如何利用itext將web頁面生成pdf
一、iText介紹
iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。
iText的安裝非常方便,在http://www.lowagie.com/iText/download.html - download 網站上下載iText.jar文件後,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用iText類庫了。
二、建立第一個PDF文檔
用iText生成PDF文檔需要5個步驟:
①建立com.lowagie.text.Document對象的實例。
Document document = new Document();
②建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁碟中。
PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));
③打開文檔。
document.open();
④向文檔中添加內容。
document.add(new Paragraph("Hello World"));
⑤關閉文檔。
document.close();
通過上面的5個步驟,就能產生一個Helloworld.PDF的文件,文件內容為"Hello World"。
建立com.lowagie.text.Document對象的實例
com.lowagie.text.Document對象的構建函數有三個,分別是:
public Document();
public Document(Rectangle pageSize);
public Document(Rectangle pageSize,
int marginLeft,
int marginRight,
int marginTop,
int marginBottom);
構建函數的參數pageSize是文檔頁面的大小,對於第一個構建函數,頁面的大小為A4,同Document(PageSize.A4)的效果一樣;對於第三個構建函數,參數marginLeft、marginRight、marginTop、marginBottom分別為左、右、上、下的頁邊距。
通過參數pageSize可以設定頁面大小、面背景色、以及頁面橫向/縱向等屬性。iText定義了A0-A10、AL、LETTER、 HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA 和FLSE等紙張類型,也可以通過Rectangle pageSize = new Rectangle(144, 720);自定義紙張。通過Rectangle方法rotate()可以將頁面設置成橫向。
書寫器(Writer)對象
一旦文檔(document)對象建立好之後,需要建立一個或多個書寫器(Writer)對象與之關聯。通過書寫器(Writer)對象可以將具體文檔存檔成需要的格式,如com.lowagie.text.PDF.PDFWriter可以將文檔存成PDF文件, com.lowagie.text.html.HtmlWriter可以將文檔存成html文件。
設定文檔屬性
在文檔打開之前,可以設定文檔的標題、主題、作者、關鍵字、裝訂方式、創建者、生產者、創建日期等屬性,調用的方法分別是:
public boolean addTitle(String title)
public boolean addSubject(String subject)
public boolean addKeywords(String keywords)
public boolean addAuthor(String author)
public boolean addCreator(String creator)
public boolean addProcer()
public boolean addCreationDate()
public boolean addHeader(String name, String content)
其中方法addHeader對於PDF文檔無效,addHeader僅對html文檔有效,用於添加文檔的頭信息。
當新的頁面產生之前,可以設定頁面的大小、書簽、腳注(HeaderFooter)等信息,調用的方法是:
public boolean setPageSize(Rectangle pageSize)
public boolean add(Watermark watermark)
public void removeWatermark()
public void setHeader(HeaderFooter header)
public void resetHeader()
public void setFooter(HeaderFooter footer)
public void resetFooter()
public void resetPageCount()
public void setPageCount(int pageN)
如果要設定第一頁的頁面屬性,這些方法必須在文檔打開之前調用。
對於PDF文檔,iText還提供了文檔的顯示屬性,通過調用書寫器的setViewerPreferences方法可以控制文檔打開時Acrobat Reader的顯示屬性,如是否單頁顯示、是否全屏顯示、是否隱藏狀態條等屬性。
另外,iText也提供了對PDF文件的安全保護,通過書寫器(Writer)的setEncryption方法,可以設定文檔的用戶口令、只讀、可列印等屬性。
添加文檔內容
所有向文檔添加的內容都是以對象為單位的,如Phrase、Paragraph、Table、Graphic對象等。比較常用的是段落(Paragraph)對象,用於向文檔中添加一段文字。
三、文本處理
iText中用文本塊(Chunk)、短語(Phrase)和段落(paragraph)處理文本。
文本塊(Chunk)是處理文本的最小單位,有一串帶格式(包括字體、顏色、大小)的字元串組成。如以下代碼就是產生一個字體為HELVETICA、大小為10、帶下劃線的字元串:
Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));
短語(Phrase)由一個或多個文本塊(Chunk)組成,短語(Phrase)也可以設定字體,但對於其中以設定過字體的文本塊 (Chunk)無效。通過短語(Phrase)成員函數add可以將一個文本塊(Chunk)加到短語(Phrase)中,如:phrase6.add(chunk);
段落(paragraph)由一個或多個文本塊(Chunk)或短語(Phrase)組成,相當於WORD文檔中的段落概念,同樣可以設定段落的字體大小、顏色等屬性。另外也可以設定段落的首行縮進、對齊方式(左對齊、右對齊、居中對齊)。通過函數setAlignment可以設定段落的對齊方式, setAlignment的參數1為居中對齊、2為右對齊、3為左對齊,默認為左對齊。
四、表格處理
iText中處理表格的類為:com.lowagie.text.Table和com.lowagie.text.PDF.PDFPTable,對於比較簡單的表格處理可以用com.lowagie.text.Table,但是如果要處理復雜的表格,這就需要 com.lowagie.text.PDF.PDFPTable進行處理。這里就類com.lowagie.text.Table進行說明。
類com.lowagie.text.Table的構造函數有三個:
①Table (int columns)
②Table(int columns, int rows)
③Table(Properties attributes)
參數columns、rows、attributes分別為表格的列數、行數、表格屬性。創建表格時必須指定表格的列數,而對於行數可以不用指定。
建立表格之後,可以設定表格的屬性,如:邊框寬度、邊框顏色、襯距(padding space 即單元格之間的間距)大小等屬性。下面通過一個簡單的例子說明如何使用表格,代碼如下:
1:Table table = new Table(3);
2:table.setBorderWidth(1);
3:table.setBorderColor(new Color(0, 0, 255));
4:table.setPadding(5);
5:table.setSpacing(5);
6:Cell cell = new Cell("header");
7:cell.setHeader(true);
8:cell.setColspan(3);
9:table.addCell(cell);
10:table.endHeaders();
11:cell = new Cell("example cell with colspan 1 and rowspan 2");
12:cell.setRowspan(2);
13:cell.setBorderColor(new Color(255, 0, 0));
14:table.addCell(cell);
15:table.addCell("1.1");
16:table.addCell("2.1");
17:table.addCell("1.2");
18:table.addCell("2.2");
19:table.addCell("cell test1");
20:cell = new Cell("big cell");
21:cell.setRowspan(2);
22:cell.setColspan(2);
23:table.addCell(cell);
24:table.addCell("cell test2");
運行結果如下:
header
example cell with colspan 1 and rowspan 2 1.1 2.1
1.2 2.2
cell test1 big cell
cell test2
代碼1-5行用於新建一個表格,如代碼所示,建立了一個列數為3的表格,並將邊框寬度設為1,顏色為藍色,襯距為5。
代碼6-10行用於設定表格的表頭,第7行cell.setHeader(true);是將該單元格作為表頭信息顯示;第8行 cell.setColspan(3);指定了該單元格佔3列;為表格添加表頭信息時,要注意的是一旦表頭信息添加完了之後,必須調用 endHeaders()方法,如第10行,否則當表格跨頁後,表頭信息不會再顯示。
代碼11-14行是向表格中添加一個寬度佔一列,長度佔二行的單元格。
往表格中添加單元格(cell)時,按自左向右、從上而下的次序添加。如執行完11行代碼後,表格的右下方出現2行2列的空白,這是再往表格添加單元格時,先填滿這個空白,然後再另起一行,15-24行代碼說明了這種添加順序。
五、圖像處理
iText中處理表格的類為com.lowagie.text.Image,目前iText支持的圖像格式有:GIF, Jpeg, PNG, wmf等格式,對於不同的圖像格式,iText用同樣的構造函數自動識別圖像格式。通過下面的代碼分別獲得gif、jpg、png圖像的實例。
Image gif = Image.getInstance("vonnegut.gif");
Image jpeg = Image.getInstance("myKids.jpg");
Image png = Image.getInstance("hitchcock.png");
圖像的位置
圖像的位置主要是指圖像在文檔中的對齊方式、圖像和文本的位置關系。IText中通過函數public void setAlignment(int alignment)進行處理,參數alignment為Image.RIGHT、Image.MIDDLE、Image.LEFT分別指右對齊、居中、左對齊;當參數alignment為Image.TEXTWRAP、Image.UNDERLYING分別指文字繞圖形顯示、圖形作為文字的背景顯示。這兩種參數可以結合以達到預期的效果,如setAlignment(Image.RIGHT|Image.TEXTWRAP)顯示的效果為圖像右對齊,文字圍繞圖像顯示。
圖像的尺寸和旋轉
如果圖像在文檔中不按原尺寸顯示,可以通過下面的函數進行設定:
public void scaleAbsolute(int newWidth, int newHeight)
public void scalePercent(int percent)
public void scalePercent(int percentX, int percentY)
函數public void scaleAbsolute(int newWidth, int newHeight)直接設定顯示尺寸;函數public void scalePercent(int percent)設定顯示比例,如scalePercent(50)表示顯示的大小為原尺寸的50%;而函數scalePercent(int percentX, int percentY)則圖像高寬的顯示比例。
如果圖像需要旋轉一定角度之後在文檔中顯示,可以通過函數public void setRotation(double r)設定,參數r為弧度,如果旋轉角度為30度,則參數r= Math.PI / 6。
六、中文處理
默認的iText字體設置不支持中文字體,需要下載遠東字體包iTextAsian.jar,否則不能往PDF文檔中輸出中文字體。通過下面的代碼就可以在文檔中使用中文了:
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);
Paragraph pragraph=new Paragraph("你好", FontChinese);
小結
iText還有很多高級的功能,這里就不一一介紹了,具體開發時可參考發布的文檔。總的來說,iText是一套java環境下不錯的製作PDF的組件。因為iText支持jsp/javabean下的開發,這使得B/S應用中的報表問題能得到很好的解決。由於iText畢竟不是專門為製作報表設計,所有報表中的內容、格式都需要通過寫代碼實現,相對於那些專業的支持可視化設計的報表軟體來說,編程的工作量就有一定程度的增加。
Ⅹ 《深入淺出Webpack》pdf下載在線閱讀全文,求百度網盤雲資源
《深入淺出Webpack》(吳浩麟)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1p5p2YfnOhHGdObAzCwLrAw
書名:深入淺出Webpack
作者:吳浩麟
豆瓣評分:6.3
出版社:電子工業出版社
出版年份:2018-1
頁數:288
內容簡介:
隨著Web開發技術的發展,Webpack憑借其便於使用和涵蓋面廣的優勢,成為目前非常流行的前端構建工具,是每位前端工程師的必備技能之一。
《深入淺出Webpack》對Webpack進行了全面講解,涵蓋了Webpack入門、配置、實戰、優化、原理等方面的內容。其中,第1章講解Webpack入門所涉及的知識;第2章詳細講解Webpack提供的常用配置項;第3章結合實際項目中的常見場景進行實踐;第4章給出優化Webpack的優秀方案;第5章剖析了Webpack的原理,並講解如何開發Plugin和Loader;附錄匯總了常見的Loader、Plugin和Webpack的其他學習資源。除了深入講解Webpack,本書還介紹了ES6、TypeScript、PostCSS、Prepack、離線緩存、單頁應用、CDN等Web開發相關的技能。
作者簡介:
吳浩麟
一線前端工程師,曾就職於騰訊,現就職於美團。專注於Web開發,參與過眾多大型Web項目的構建、設計和開發,喜歡探索Web前沿技術。也是Golang和音視頻技術的愛好者,活躍於GitHub,ID為gwuhaolin。