如何把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平臺上將網頁轉化為圖片的工具,它能將網頁轉化為bmp、png和jpg等格式的圖片。通常,html2image需要執行在一個X server上,不過我們也可以不安裝 一個真的X11 server,使用Xvfb來替代X server執行html2image。這樣做可以使我們在伺服器上更快的將html頁面轉化為image。
html2image
1、解壓包檔案到服務上的某個目錄下。(例如/usr/local/html2image/);
2、將html2image的檔案路徑加到shared library的ld路徑中。例如:
export LD_LIBRARY_PATH=/usr/local/html2image/
或者你可以將這個路徑加到/etc/ld.so.conf,然後執行ldconfig
3、在X server上執行html2image將html轉化為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,只要執行一次就可以了。
b、export 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
JS把Date轉化為指定格式的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解析HTML之把HTML轉成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,