PDF生成的另一種方式

?最近在工作中遇到了java生成PDF的需求,當(dāng)時腦子靈光一閃itext啊菌赖。然后從github搜索了一下開源項(xiàng)目開始實(shí)現(xiàn)聂示。我是用itext+freemarker結(jié)合實(shí)現(xiàn)的它掂,但是到了測試階段發(fā)現(xiàn)這種方式對一些樣式不支持,無奈轉(zhuǎn)用另一種方式:wkhtmltopdf帆啃。

wkhtmltopdf簡介:工具全名叫 "wkhtmltopdf" ; 是一個使用 Qt WebKit 引擎做渲染的瞬女,能夠把html 文檔轉(zhuǎn)換成 pdf?文檔 或 圖片(image) 的命令行工具。(強(qiáng)調(diào)一下:是?“命令行工具”?)支持多個平臺努潘,可在win诽偷,linux坤学,os x 等系統(tǒng)下運(yùn)行。

使用wk實(shí)現(xiàn)生成pdf大體思路:構(gòu)建一個html模板(建議使用spring thymeleaf)报慕;構(gòu)建調(diào)用wk生成命令(具體命令大家可以從官網(wǎng)看下)深浮,命令中有兩個重要參數(shù):1).請求html模板地址,2).生成的pdf文件存儲位置眠冈;3.通過java調(diào)用wkhtmltopdf命令生成飞苇;

這里我為了大家好理解單獨(dú)寫了一個項(xiàng)目講解:https://gitee.com/rain_zhx/pdf-contract-demo.git,現(xiàn)在通過項(xiàng)目開始講解整個生成過程蜗顽。

項(xiàng)目使用技術(shù)棧:spring cloud + spring boot + thymeleaf +?阿里oss +redis布卡。

項(xiàng)目結(jié)構(gòu):整個項(xiàng)目使用maven聚合。pdf-server是eureka-server可以理解為注冊中心;pdf-client是調(diào)用端可以理解為eureka的客戶端诫舅;pdf-manager是提供者提供pdf生成的接口羽利;

項(xiàng)目配置修改以及啟動順序:修改pdf-manage的config下dev配置文件,包括redis和properties中oss配置(項(xiàng)目是使用了生產(chǎn)棧測試棧分離配置文件方式)刊懈;修改完成后首先啟動pdf-server这弧;啟動pdf-client;啟動pdf-manage虚汛;注意全程只修改pdf-manage項(xiàng)目中的配置文件即可匾浪,其他兩個服務(wù)不需要動哦。

項(xiàng)目思路分析:pdf-manage作為pdf生成服務(wù)中心設(shè)計卷哩,公司所有和pdf相關(guān)的業(yè)務(wù)都可以寫在此服務(wù)中蛋辈。pdf-client和pdf-server只是我為了大家測試方便所以繼承到項(xiàng)目中。我把生成pdf公共的操作抽象出來将谊,需要通過業(yè)務(wù)自定義的業(yè)務(wù)抽象到AbstractPDFDataProcessor抽象類中冷溶,然后使用了模板設(shè)計模式,不同的業(yè)務(wù)有不同的實(shí)現(xiàn)類但是都繼承上述抽象類尊浓。嗯逞频,說再多也沒有用這種設(shè)計之美還是需要大家通過代碼去體會哦,多閱讀代碼栋齿。

大家在閱讀代碼有哪里不解的或者啟動項(xiàng)目有問題的歡迎加群978219630

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苗胀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瓦堵,更是在濱河造成了極大的恐慌基协,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菇用,死亡現(xiàn)場離奇詭異澜驮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)惋鸥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門泉唁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹅龄,“玉大人,你說我怎么就攤上這事亭畜。” “怎么了迎卤?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵拴鸵,是天一觀的道長。 經(jīng)常有香客問我蜗搔,道長劲藐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任樟凄,我火速辦了婚禮聘芜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缝龄。我一直安慰自己汰现,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布叔壤。 她就那樣靜靜地躺著瞎饲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炼绘。 梳的紋絲不亂的頭發(fā)上嗅战,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音俺亮,去河邊找鬼驮捍。 笑死,一個胖子當(dāng)著我的面吹牛脚曾,可吹牛的內(nèi)容都是我干的东且。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼斟珊,長吁一口氣:“原來是場噩夢啊……” “哼苇倡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起囤踩,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旨椒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堵漱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體综慎,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年勤庐,在試婚紗的時候發(fā)現(xiàn)自己被綠了示惊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片好港。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖米罚,靈堂內(nèi)的尸體忽然破棺而出钧汹,到底是詐尸還是另有隱情,我是刑警寧澤录择,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布拔莱,位于F島的核電站,受9級特大地震影響隘竭,放射性物質(zhì)發(fā)生泄漏塘秦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一动看、第九天 我趴在偏房一處隱蔽的房頂上張望尊剔。 院中可真熱鬧,春花似錦菱皆、人聲如沸须误。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霹期。三九已至,卻和暖如春拯田,著一層夾襖步出監(jiān)牢的瞬間历造,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工船庇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吭产,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓鸭轮,卻偏偏與公主長得像臣淤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子窃爷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容