pdf由於不可編輯性,匯出時不能像excel一樣直接在模板上填充資料,因此需要在模板生成之前填充資料,下面的一種方式是利用html轉pdf,freemark可以做html模板,itext生成pdf,能夠解決基本的pdf匯出需求。
首先根據自己的業務需求,做乙個html模板,如下圖所示:
往設定好html模板上填充資料:
list list =
newarraylist
(); exportdomain exportdomain =
newexportdomain()
; exportdomain.
setusername
("張三");
exportdomain.
setrolename
("管理員");
exportdomain.
setmenuname
("功能1");
list.
add(exportdomain)
; exportdomain exportdomain1 =
newexportdomain()
; exportdomain1.
setusername
("李四");
exportdomain1.
setrolename
("辦理員");
exportdomain1.
setmenuname
("功能2");
list.
add(exportdomain1)
; exportdomain exportdomain2 =
newexportdomain()
; exportdomain2.
setusername
("王五");
exportdomain2.
setrolename
("審核員");
exportdomain2.
setmenuname
("功能3");
list.
add(exportdomain2)
; map datamodel =
newhashmap
(); datamodel.
put(
"title"
,"html轉pdf測試");
datamodel.
put(
"userlist"
, list)
; datamodel.
put(
"reportdate"
,new
******dateformat
("yyyy-mm-dd").
format
(new
date()
)); datamodel.
put(
"reportuser"
,"大哥大");
;
注:exportdomain是業務需求的實體類。
使用freemark製作html模板,將資料寫入html中:
writer out =
null
; stringreader reader =
null
;try
catch
(exception e)
finally
} bufferedreader br =
newbufferedreader
(reader)
; stringbuilder content =
newstringbuilder()
; string str =
null
;while
((str = br.
readline()
)!=null
)
使用itext將html轉換為pdf流
bytearrayoutputstream out =
newbytearrayoutputstream()
;//設定文件大小
document document =
newdocument
(pagesize.a4)
; pdfwriter writer = pdfwriter.
getinstance
(document, out)
;//itext立即合成
writer.
setstrictimagesequence
(true);
//輸出為pdf檔案
快速排序演算法實現(遞迴實現 棧實現)
基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...
介面實現與配置實現
在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...
js分頁實現,前端實現。
主要是借鑑了網上乙個例子,自己重新加了樣式,新增了跳轉,修改了一些小地方,用於和大家一起分享,前端分頁的技巧,的資料是我已經寫好了,其實大家也可以前端渲染 然後再分頁,都是可以的。其實分頁最關鍵是這兩句 var startrow currentpage 1 pagesize 1 currentpag...