html2Image 修改

最近有個功能需要下載憑證,想偷懶,所以找到一個html2image的jar包,把html傳到後臺生成圖片給用戶下載。


問題來了, html2image 利用JEditorPane來渲染html,然後它不支持table關於邊框的設置,想了個辦法hack下,搞定了,具體辦法是設置table的背景爲黑色,設置td,th的背景爲白色,設置table的cellpadding="1" cellspacing="1",這樣就能露出table的黑色背景,就是邊框啦,


還有一個問題,table的寬度一直控制不好,頁面顯示的正常,生成出來的圖片寬度就不對,沒辦法,就將原來的jar包找到,改了代碼,新添了傳入css樣式的方法,解決了這個問題。


http://download.csdn.net/detail/mchange/7615831

public static void main(String[] args) {
		String[] css = new String[]{
				"body {width:698px; overflow:hidden}"
		};
		HtmlImageGenerator imageGenerator = new HtmlImageGenerator(css);  
		Dimension d = new Dimension(500,500);
        imageGenerator.setSize(d);
        String htmlstr = "<div class=\"Voucher-title\" style=\"height:60px;padding-top:20px\"> 								<img src=\"http://127.0.0.1//abroad/images/common/a2_03.gif\">						</div>						<div class=\"Voucher-detail\" style=\"padding-top:5px\">							" +
        		"<table cellpadding=\"1\" cellspacing=\"1\" style=\"background-color: #c7c7c7; width:100%;\">								<tbody><tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" rowspan=\"1\" align=\"center\" valign=\"middle\">訂單號:</td>									<td style=\"line-height:25px; padding-left:5px;  background-color: white;\" colspan=\"2\">										14070909400808201990									</td>								</tr>																<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" rowspan=\"1\" align=\"center\" valign=\"middle\">訂單狀態</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\" colspan=\"2\">																																												處理成功																																																																																														</td>								</tr>																<tr>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:118;\" rowspan=\"5\" align=\"center\" valign=\"middle\">付款人信息</td>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:118;\">匯款人姓名</td>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:400\">奧巴馬0009(GF)</td>								</tr>								<tr>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:118;\">支付賬號</td>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:400\">121212121212</td>								</tr>								<tr>									<td style=\" line-height:25px; padding-left:5px;  background-color: white;width:118;\">匯款幣種金額</td>									<td style=\"  line-height:25px; padding-left:5px;  background-color: white;width:400\">USD 12.0</td>								</tr>								<tr>									<td style=\" line-height:25px; padding-left:5px;  background-color: white;width:118;\">支付銀行及卡號</td>									<td style=\" line-height:25px; padding-left:5px;  background-color: white;width:400\">中國銀行;121212121212</td>								</tr>								<tr>									<td style=\"line-height:25px; padding-left:5px;  background-color: white;width:118px;\">匯款人地址</td>									<td style=\" line-height:25px; background-color: white;width:400\">如果彼得德魯克說管理是種實踐是對的,那管理的靈魂就必然是一種獨立思考的精神,因爲唯有獨立思考才能完成打穿理論與現實,完成特殊到一般,一般再到特殊這樣的輪迴。</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" rowspan=\"9\" align=\"center\" valign=\"middle\">收款人信息</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">收款人名稱</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">布蘭2</td>									</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">開戶銀行名稱</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">守夜人銀行</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">開戶銀行SWIFT編號</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">122334</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">開戶銀行ABA編號</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\"></td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">開戶銀行IBAN編號</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\"></td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">收款人帳號</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">622512349876</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">收款人地址</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">臨冬城</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">收款人代理銀行信息</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">																					代理行名稱地址:WebResizer:在線圖片壓縮工具提供了一種更便捷的在線壓縮服務,圖片大小減少了不少。但是圖片效果依然是那麼好,另外還可以在圖片上添加邊...;																															代理行開戶號:33;																																									代理行SWIFT Code:11																			</td>								</tr>																								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">常駐國家名稱及代碼</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">美國/110</td>								</tr>																<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" rowspan=\"5\" align=\"center\" valign=\"middle\">服務明細</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">購匯金額</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">USD: 12.0</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">購匯匯率</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">5.988</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">等值人民幣</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">71.86</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">手續費</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">人民幣0.72</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\">電報費</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;\">人民幣150.0</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" align=\"center\" valign=\"middle\">交易附言</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;;\" colspan=\"2\">管理就是這樣的一種東西,每個人都可以說上幾句,但你很難識別這是對的還是錯的,很難識別它究竟對公司的成功是一種正向的助推力還是一種逆向的殺傷力</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" align=\"center\" valign=\"middle\">匯款附言</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;;\" colspan=\"2\">管理就是這樣的一種東西,每個人都可以說上幾句,但你很難識別這是對的還</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" align=\"center\" valign=\"middle\">手續費扣款方式</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;;\" colspan=\"2\" \"=\"\">																																												付款方支付手續費																														</td>								</tr>								<tr>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;width:118px;\" align=\"center\" valign=\"middle\">合計</td>									<td style=\" word-break:break-all; word-wrap:break-word; line-height:25px; padding-left:5px;  background-color: white;;\" colspan=\"2\">人民幣										222.58									</td>								</tr>								</tbody></table>						</div>";  
        imageGenerator.loadHtml(htmlstr);  
        imageGenerator.getBufferedImage(); 
        imageGenerator.saveAsImage("d:/hello2.png");
        System.out.println("ok");
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章