freemark itext實現匯出pdf附原始碼

2021-09-18 01:18:48 字數 4254 閱讀 9714

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...