1. 程式人生 > >如何把html轉化為圖象

如何把html轉化為圖象

一,背景

a,需求

b,已經有的調研結果

二,整個經歷

a,調研過程中遇到的各種坑

用google搜尋html2image linux 64

一個靠譜的網頁說明在http://blog.163.com/agw_slsyn/blog/static/309151122012103115330848/,另外還有一個http://www.guangmingsoft.net/htmlsnapshot/html2image.htm

按照其中的方法:

Linux kernel- 2.2.14及以上: 安裝必需lib及相關軟體

yum install -y glibc gtk+ fontconfig cairo libpixman pango pango-devel 

下載html2image

設定LD_LIBRARY_PATH路徑

export LD_LIBRARY_PATH=./ mkdir /usr/X11R6/lib ln - s /usr/share/X11 /usr/X11R6/lib/X11 

執行Xvfb

./Xvfb :1 -screen 0 640x480x24 -nolisten tcp -audit 4 -auth X1.cfg & export DISPLAY=:1 

生成圖片

./html2image www.google.com a.jpg 

可忽略的錯誤:

error opening security policy file /usr/X11R6/lib/X11/xserver/SecurityPolicy Could not init font path element /usr/X11R6/lib/X11/fonts/TTF/, removing from list! Could not init font path element /usr/X11R6/lib/X11/fonts/Speedo/, removing from list! Could not init font path element /usr/X11R6/lib/X11/fonts/Type1/, removing from list! Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list! 


生成1024x768 格式 容量

jpg 871K

gif 4.12M

png 1.13M 

----

HTML2Image(http://www.guangmingsoft.net/htmlsnapshot/html2image.htm)是一個執行在Linux/Unix平臺上將網頁轉化為圖片的工具,它能將網頁轉化為bmppngjpg等格式的圖片。通常,html2image需要執行在一個X server上,不過我們也可以不安裝 一個真的X11 server,使用Xvfb來替代X server執行html2image。這樣做可以使我們在伺服器上更快的將html頁面轉化為image

html2image

的安裝及使用方法:

1、解壓包檔案到服務上的某個目錄下。(例如/usr/local/html2image/);

2、html2image的檔案路徑加到shared libraryld路徑中。例如:

    export LD_LIBRARY_PATH=/usr/local/html2image/

或者你可以將這個路徑加到/etc/ld.so.conf,然後執行ldconfig

3、X server上執行html2imagehtml轉化為image

a、轉化為bmp格式

html2image www.google.com a.bmp a.bmp就在執行該命令的目錄下)

b、轉化為jpg格式

html2image www.google.com a.jpg a.jpg就在執行該命令的目錄下)

c、將本地html檔案轉換為png格式

html2image file://home/user/test.html a.png a.png就在執行該命令的目錄下)

4、使用Xvfb在文字模式下執行html2image。在html2image目錄下,執行下面的命令:

a./Xvfb :1 -screen 0 640x480x24 -nolisten tcp -audit 4 -auth X1.cfg

Xvfb模擬產生一個X11 server,只要執行一次就可以了。

bexport DISPLAY=:1 

設定登入到linux機器的終端的環境變數DISPLAY的值,登入一次linux需要執行一次該命令

c./html2image www.google.com  ./b.png

www.google.com網頁轉化為b.png檔案,儲存在當前目錄下

這其中遇到的問題主要在執行的過程當中出的各種core,這個實在是沒法調,並且還把系統給搞掛了,因為在/etc/ld.so.conf做了更改,把動態庫的路徑當中增加了一個路徑,就是他給的那個目錄,結果他給的那個目錄裡面有好多個系統的庫,它就把覆蓋了,結果就出現了大坑,開機都開不了,啟動到使用者登入的介面的時候,出現了certmonger failed,還好在一位大牛的指點下成功fix了

還出現libxul.so一直找不到的問題,結果通過網上查說是得裝firefox,然後就裝了,結果報X錯誤

裝了xvfb

此路不通,還導致伺服器掛掉,希望有大牛給出此按照此路徑走成功的整個過程

b,使用HTML2image
此方案比較簡單易行,下了一個jar包之後,按照它給的例子即可很快搞定,參考網址,https://code.google.com/p/java-html2image/issues/detail?id=14

其對於css支援不是很好,因此很多格式顯示的有問題,另外它的dimensions也不起作用,這裡也沒做太多的研究

猜測其是直接把text列印到jpanel上,然後儲存成image,沒看其原始碼,有興趣的同學可以看看

http://stackoverflow.com/questions/7440067/using-css-in-html2imagejava

c,再次調研wkHTMLtoPDFhttp://wkhtmltopdf.org/

這次我先在自己的機器上裝了個windows版本的,並用命令列試了試,感覺非常不錯,於是才敢裝到伺服器端,太讚了

三,結論

http://stackoverflow.com/questions/20804994/render-and-screenshot-a-web-page

這個網頁非常不錯

相關推薦

如何html轉化

一,背景 a,需求 b,已經有的調研結果 二,整個經歷 a,調研過程中遇到的各種坑 用google搜尋html2image linux 64 一個靠譜的網頁說明在http://blog.163.com/agw_slsyn/blog/static/30915112201210

引號裏面包含著對,怎麽此類的字符串去掉引號轉化? 且聽下面講解。

meta 一個 很快 字符串 round script json字符串 pre name屬性 理論上,後臺返回的數據應該是json或者xml的格式,然後我們前端的請求一般都會轉化為js類型的數據,然後我們就可以進行相應的操作,但是如果後臺的小夥伴說是返回了一個字符串? 但是

java-練習 數字轉化錢幣

bsp chinese hand int 都是 邏輯 中文 switch equal 傻瓜版 寫到最後懶得寫小數部分了,反正邏輯都是一樣繞。 package chapter4; public class FloatToRmb { public static void

字串轉化整數

題目描述   將一個字串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0。 輸入描述:   輸入一個字串,包括數字字母符號,可以為空

html轉化圖片,並且和另一張圖片合成新的圖片

最近專案裡有一個需求:把kedit裡的html內容和事先設定好的背景顏色轉為圖片,嵌入到一張事先準備好的圖片裡先看下效果                                                 圖1                    

時間轉化大寫的js指令碼

//將當前時間轉化為大寫 function ConverToDate(uppTime) {  var date=uppTime.split('-');     var chinese = ['○', '一', '二', '三', '四', '五', '六', '七', '

[python刷題]牛客網11——羅馬轉化英文描述

題目描述 有一個非負整數,請編寫一個演算法,列印該整數的英文描述。 給定一個int x,請返回一個string,為該整數的英文描述。 測試樣例: 1234 返回:"One Thousand,Two Hundred Thirty Four" class ToStrin

JSDate轉化指定格式的String(Format)

<script type="text/javascript">         Date.prototype.Format = function(fmt) {             var o = {                 "M+": this.get

java實現Excel檔案解析---apache POI以及漢字轉化拼音

package com.haha.utils; import java.util.Arrays; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType

用腳本js結果轉化固定小數位的形式

n) ret style ali fun round ext spa 得到 function roundTo(base,precision) { var m=Math.pow(10,precision); var a=Math.round(base *

JsonObject將字符串轉化

ebr eva mst ima 相似度 gen 轉載 err lmap //JSON.parseObject,是將Json字符串轉化為相應的對象;JSON.toJSONString則是將對象轉化為Json字符串。 String sb= {"message":

如何word ppt 思維導這類文件轉化高清晰度的圖片(要幹貨只看粗體黑字)

文件格式 而且 格式轉換 ctrl + c 但我 span 不用 .net 成了 我使用思維導圖做學習筆記,最終繪制了一張比較滿意的思維導圖,想要分享出去,但由於現在思維導圖軟件眾多,成品文件格式差別蠻大,不利於傳播和打開,所以需要轉化為普通圖片,但筆者使用的導圖軟件導出轉

將一個 JavaBean 對轉化一個 Map

一個 影響 iba [0 全部 調用 intro try acc package com.loan.modules.common.util; import java.beans.BeanInfo; import java.beans.IntrospectionExcep

halcon 如何一個region截取出來保存

reg 如何 main 取出 截取 保存 mas hal 一個 read_image(Image,‘monkey‘) gen_circle(region,200,200,150) reduce_domain(Image,region,Mask) crop_domain

劍指offer:一個支付算轉化整數

技術 字符串數組 單引號 blog spa opened int num clas 1:首先,根據課本上的程序,是這樣的: #include "stdafx.h" #include "iostream" using namespace std; int StrToInt

Python爬蟲系列(四):Beautiful Soup解析HTMLHTML轉成Python對

調用 nor 結束 版本 現在 name屬性 data 官方文檔 get 在前幾篇文章,我們學會了如何獲取html文檔內容,就是從url下載網頁。今天開始,我們將討論如何將html轉成python對象,用python代碼對文檔進行分析。 (牛小妹在學校折騰了好幾天,也沒把h

C# 使用 wkhtmltopdf HTML文本或文件轉換PDF

null 官網 添加 inpu pre pty 彩色 分辨率 tput 一、簡介 之前也記錄過一篇關於把 HTML 文本或 HTML 文件轉換為 PDF 的博客,只是之前那種方法有些局限性。 後來又了解到 wkhtmltopdf.exe 這個工具,這個工具比起之前的那種方法

php學習筆記-php中浮點數轉化整數

floor 它的 gpo 操作 post bsp 有時 原因 結果 在php中有時候會遇到比如 14.6%3這種操作,php是會先把14.6轉化為整數再做其它的操作,那麽這個轉化為整數的操作是floor(14.6)還是ceil(14.6)還是round(14.6)呢?都不是

java音訊顯示波形

package cn.xuan.test; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; im

opencv讀取圖片並轉化灰度,並調整視窗大小

Mat src_color = imread(路徑名);//讀取原彩色圖 int c=src_color.cols/2; int r=src_color.rows/2; Mat src_gray;//彩色影象轉化成灰度圖 cvtColor(src_color, src_gray,