欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)html轉(zhuǎn)pdf方法步驟

 更新時間:2023年08月01日 10:07:14   作者:白白可以改變  
這篇文章主要給大家介紹了關(guān)于java實現(xiàn)html轉(zhuǎn)pdf方法的相關(guān)資料,要將HTML轉(zhuǎn)換成PDF,我們需要借助Java中的第三方庫,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1.需求:

將一個html頁面轉(zhuǎn)成pdf格式。

2.方法:

在實現(xiàn)之前先考慮一個問題,pdf是前端生成還是后端生成。這里采用pdfbox+itext(PDF文件名可自定義)技術(shù)在服務(wù)端生成。優(yōu)點:免費,不需要安轉(zhuǎn)軟件,速度快,對于開發(fā)者而言,開發(fā)中僅需導(dǎo)入相應(yīng)jar,且易部署。

缺點:對于html標(biāo)簽比較嚴(yán)格。

3.實現(xiàn):

3.1 需要的jar

itext-2.0.8.jar+pdfbox-2.0.19.jar

3.2 準(zhǔn)備好html頁面代碼(注意:這里需要手動指定字體):

sHtml += "<!DOCTYPE html[<!ENTITY nbsp ' '>]>";
	sHtml += "<html>";
	sHtml += "<head>";
	sHtml += "</head>";
	sHtml += "<body style='font-family:SimSun !important;'>";
	sHtml += "<h1>這里是測試PDF代碼部分</h1>";
	sHtml += "</body>";
	sHtml += "</html>";

3.3 服務(wù)端開始生成PDF文件:

public static void toPdf(String sHtml) {
		try {
			//創(chuàng)建PDf文件
			ITextRenderer renderer = new ITextRenderer();
			ITextFontResolver fontResolver = renderer.getFontResolver();
			//C:/WINDOWS/Fonts/SimSun.ttc 系統(tǒng)自帶的語言包,直接引用
			fontResolver.addFont("C:/WINDOWS/Fonts/SimSun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
			fontResolver.addFont("C:/WINDOWS/Fonts/Arial.ttf",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);// 宋體字
			String sDate = new SimpleDateFormat("yyyyMMdd").format(new Date());
    		String sTime = new SimpleDateFormat("HHmmssSSS").format(new Date());
			//指定文件存放路徑
			URL sUrlPath = 當(dāng)前類名.class.getResource("/");
			String sPath = sUrlPath.toURI().getPath();
			sPath1 = sPath.replace("WEB-INF/classes/", "");
			String sPathFolder = sPath+sDate+"\\";
			File filePath = new File(sPathFolder);
    		if(!filePath.exists()  && !filePath.isDirectory()){
    			filePath.mkdirs();
    		}
    		String sFileName = sDate+sTime+".pdf";
			String sPathSave = sPathFolder+sFileName;
			OutputStream os = new FileOutputStream(sPathSave);
			//使用有setDocumentFromString()方法的jar包
			renderer.setDocumentFromString(sHtml);
			renderer.layout();
			renderer.createPDF(os);
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}

3.4 前端頁面發(fā)起請求,服務(wù)端將生成的PDF文件返回。

String sTitle = "測試PDF文件名";
File file = new File(sFileUrl);//這里的sFileUrl即上面PDF保存路徑
	try {
	    OutputStream outputStream = response.getOutputStream();
	     //加載pdf附件到PDF流中
	     PDDocument document = PDDocument.load(new FileInputStream(file));
	    response.reset();
	    response.setContentType("application/pdf;charset=UTF-8");
	    response.setHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode(sTitle, "UTF-8"));
	    response.setContentType("application/pdf;charset=UTF-8");
	    //從PDF流中獲得PDF文檔屬性對象
	    PDDocumentInformation info = document.getDocumentInformation();
	    //設(shè)置PDF文檔屬性對象的文件名稱(最重要的環(huán)節(jié))
	    info.setTitle(sTitle);
	    document.setDocumentInformation(info);
	    //修改完直接輸出到響應(yīng)體中
	    document.save(outputStream);
	    outputStream.close();
	    document.close();
	    out.clear();  
		out = pageContext.pushBody();
	} catch (Exception e) {
	}

完成!

總結(jié)

到此這篇關(guān)于java實現(xiàn)html轉(zhuǎn)pdf方法步驟的文章就介紹到這了,更多相關(guān)java html轉(zhuǎn)pdf內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java用接口、多態(tài)、繼承、類計算三角形和矩形周長及面積的方法

    java用接口、多態(tài)、繼承、類計算三角形和矩形周長及面積的方法

    這篇文章主要介紹了java用接口、多態(tài)、繼承、類計算三角形和矩形周長及面積的方法,涉及java面向?qū)ο笾蓄?、接口、多態(tài)等的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Aop動態(tài)代理和cglib實現(xiàn)代碼詳解

    Aop動態(tài)代理和cglib實現(xiàn)代碼詳解

    這篇文章主要介紹了Aop動態(tài)代理和cglib實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • java中成員變量與局部變量區(qū)別分析

    java中成員變量與局部變量區(qū)別分析

    這篇文章主要介紹了java中成員變量與局部變量區(qū)別,較為詳細(xì)的分析了java中成員變量與局部變量的功能、用法與區(qū)別,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • Java gbk轉(zhuǎn)utf-8

    Java gbk轉(zhuǎn)utf-8

    本文主要介紹了Java gbk轉(zhuǎn)utf-8的方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Spring的IOC容器實例化bean的方式總結(jié)

    Spring的IOC容器實例化bean的方式總結(jié)

    IOC容器實例化bean的三種方式:構(gòu)造方法、靜態(tài)工廠、實例工廠,本文將通過代碼示例給大家詳細(xì)講解一下這三種方式,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Spring MVC 攔截器 interceptor 用法詳解

    Spring MVC 攔截器 interceptor 用法詳解

    這篇文章主要介紹了Spring MVC 攔截器 interceptor 用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot使用WebJars統(tǒng)一管理靜態(tài)資源的方法

    SpringBoot使用WebJars統(tǒng)一管理靜態(tài)資源的方法

    這篇文章主要介紹了SpringBoot使用WebJars統(tǒng)一管理靜態(tài)資源的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實現(xiàn)

    SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實現(xiàn)

    這篇文章主要介紹了SpringBoot使用Atomikos技術(shù)整合多數(shù)據(jù)源的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java?volatile關(guān)鍵字特性講解下篇

    Java?volatile關(guān)鍵字特性講解下篇

    JMM要求保證可見性、原子性、有序性,volatile可以保證其中的兩個,本篇文章具體驗證volatile的可見性,不原子性和禁重排,同時解決volatile的不保證原子性,讓代碼具有原子性
    2022-12-12
  • 幾道java循環(huán)練習(xí)題(適合新人)

    幾道java循環(huán)練習(xí)題(適合新人)

    這篇文章主要給大家介紹了幾道java循環(huán)練習(xí)題,非常適合剛?cè)腴T的java新人,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論