1. 程式人生 > >java開發html轉pdf 解決方案

java開發html轉pdf 解決方案

    之前在工作中遇到過一個需求,是將使用者填寫的申報,由固定模板的來生成pdf,後來想到先把內容生成html,

然後再把html格式的內容轉換成pdf。

    之前在網上找了很多,有很多內容都是轉載的,後來折騰了好幾天才試出一個真實能用的,所以在這裡記錄一下。方便以後查閱,也希望能幫到別人。

1.所需jar包

 core-renderer.jar ,iText-2.0.8.jar

2、示例html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta charset="utf-8" /> 
<style> 
	 body{ padding:0; margin:0; font-family:SimSun; color: red} 

</style>
 </head>	
		
<body>
 <h1>2233322dsss--你好--dss2</h1>
 
  <img alt="w2" width="100px" height="100px" src="http://tva4.sinaimg.cn/crop.0.0.180.180.50/9907976cjw1e8qgp5bmzyj2050050aa8.jpg"/>
 </body>
 </html>

html中要注意的是字型的設定,

font-family:SimSun;

在下面的java程式碼中,也需要載入對應的字型,不然會出現中文顯示不出來的情況

3、java程式碼

package wqb.pdf.test;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;

/**
 * html轉pdf
 * 
 * @author wqb
 *
 */
public class PdfDemoTest {

	public static void main(String[] args) throws Exception {

		//讀取html的流
		InputStream inputStream = PdfDemoTest.class.getResourceAsStream("test.html");
		
		//流轉換成字串
		StringBuffer out = new StringBuffer();
		byte[] b = new byte[4096];
		for (int n; (n = inputStream.read(b)) != -1;) {
			out.append(new String(b, 0, n));
		}

		String html = out.toString();
		String pdffile = "C:\\wqb\\test.pdf";

		OutputStream os = new FileOutputStream(pdffile);
		ITextRenderer renderer = new ITextRenderer();
		renderer.setDocumentFromString(html);
		// writer.setPageEvent(header);
		ITextFontResolver fontResolver = renderer.getFontResolver();
		// 新增字型支援,路徑可以自身專案的實際情況設定,我這裡是本地專案,而且為了方便測試,就寫成固定的了
		// 實際專案中,可以獲取改字型所在真實的伺服器的路徑,這個方法是本地地址和網路地址都支援的
		// 這裡面新增的是宋體
		fontResolver.addFont("C:\\software\\eclipse-neon\\workspace\\htmlToPdfDemo\\bin\\SIMSUN.TTC",
				BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

		 
		renderer.layout();
		renderer.createPDF(os);
		os.flush();
		os.close();

	}
}

4、實際效果


總結:示例程式碼比較簡單,只是單純的實現了匯出pdf而已。在真實業務場景中,html的內容一般是用template或者Velocity 生成。並且字型的路徑也不能寫死,可以根據自己的專案情況採用合適的讀取辦法。

需要注意的是字型,一定要設定!!!

對html的規範要求極高,例如:頁面中<mate></mate> 等標籤必須閉合!!!

比較缺分,所以資源要分了。諒解

相關推薦

java開發htmlpdf 解決方案

    之前在工作中遇到過一個需求,是將使用者填寫的申報,由固定模板的來生成pdf,後來想到先把內容生成html,然後再把html格式的內容轉換成pdf。    之前在網上找了很多,有很多內容都是轉載的,後來折騰了好幾天才試出一個真實能用的,所以在這裡記錄一下。方便以後查閱,

PDF技術(四)-Java實現HtmlPDF檔案

html轉換為pdf的關鍵技術是如何處理網頁中複雜的css樣式、以及中文亂碼處理。 各實現對比表 於Windows平臺進行測試:   基於IText 基於FlyingSaucer 基於WKHtmlToPdf

iText —— JAVAhtmlpdf

1、index.html檔案內容如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

Java實現HtmlPDF

專案上的客戶提出一個需求,把政務流程中的表單資料匯出成pdf或者圖片格式,用來作電子檔案材料。表單基於公司的電子政務構建平臺實現,在資料庫儲存的都是html格式,因此打算直接把表單html轉成pdf或者圖片。由於表單是已經寫好了html頁面,那我要做的就是能完美解析htm

java實現htmlpdf,支援中文,css以及中文換行

專案需使用到html轉pdf功能,在網上搜了很多,綜合了不少大神的方法,現在這裡做一個標記,以免自己以後忘記了。 java程式碼 import java.io.File; import java.io.FileOutputStream; import j

java通過htmlpdf

HTML轉PDF工具(wkhtmltopdf)介紹,支援widows和linux wkhtmltopdf下載地址:連結:http://pan.baidu.com/s/1jIkk9Wa 密碼:ljn6 cmd用法: java用法: package

java完成HTMLPDF wkhtmltopdf

為什麼使用wkhtmltopdf HTML轉PDF的實現方式有很多,但是轉換出來的PDF的質量又好有壞。之前試過IText和一些其

javascript+java實現html化為PDF文檔

parse itl 比例 數據 length java實現 ucc bytearray ngs   1. 項目中引入相關的jar包     itextasian-1.5.2.jar     itext-4.2.1.jar     itextpdf-5.1.2.jar    

java htmlpdf 中文亂碼

網上關於 html生產pdf的java程式碼許多,我就不說了。主要是記錄一下亂碼問題的關鍵 1、html檔案必須是utf-8編碼格式的檔案。 2、程式碼中的獲取方式也是utf-8的格式。 3、其他的按照別人的教程編寫

Java實現WordPDF方案選擇

Java實現Word轉PDF方案選擇       很多應用場景中都會涉及到Word轉PDF,但Word轉PDF的方案在網上一搜一大把,讓人眼花繚亂,筆者踩過無數的坑後,最終總結出以下三種方案 OpenOffice實現

Java操作wkhtmltopdf實現HtmlPDF

做java開發的都知道,java生成pdf大部分都是用itext,itext的確是java開源元件的第一選擇。不過itext也有侷限,就是要自己寫模版,系統中的表單數量有好幾百個,為每個表單做一個匯出

wkhtmltopdf htmlPDF 支援java 直接呼叫命令進行轉換

wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file> 常規選項  --allow <path>  允許載入從指定的資料夾中的檔案或檔案(可重複)--b

Itext 匯出PDF(中文解決HTMLPDF

iText是著名的開放原始碼的站點sourceforge一個專案,是用於生成PDF文件的一個java類庫。通過iText不僅可以生成PDF或rtf的文件,而且可以將XML、Html檔案轉化為PDF檔案。 iText的安裝非常方便,下載iText.jar檔案後,只需要在系統的

Java htmlPDF

在公司接到一個任務,需要有HTML和PDF兩套模板,進行功能實現。 於是我就到網上搜索資料,看看是否能夠html轉PDF。 果然搜到了很多案例,當然很多一樣的啦。 這裡我將處理demo時遇到的問題和解決方案都大概說下吧! 下面我下貼出demo: public static

JAVA】使用 iText XMLWorker實現HTMLPDF

使用 iText XML Worker實現HTML轉PDF package com.yfli.iText; import java.io.FileInputStream; import java.i

JavaHTML化為PDF+獲得頁數+合併PDF

最近公司用到了HTML轉PDF的技術,這裡就把用到的方式和技術在這裡寫一下,方便他人和自己以後有需要時進行

java htmlpdf手動分頁

方法1:用com.lowagie 引用jar包: compile group:'org.xhtmlrenderer',name:'core-renderer',version:'R8' compile group:'com.lowagie',name:'itext',

JAVA PDF解決方案

概述 Java Servlet 程式設計可以很方便地將 HTML 檔案傳送到客戶端的 Web 瀏覽器。然而許多站點還允許訪問非 HTML 格式的文件,包括 Adobe PDF、Microsoft Word 和 Micorsoft Excel 等。事實上這些非 HTML 格式只

Java生成word/pdf解決方案

首先介紹幾種java匯出word方案 1、Jacob是Java-COM Bridge的縮寫,它在Java與微軟的COM元件之間構建一座橋樑。使用Jacob自帶的DLL動態連結庫,並通過JNI的方式實現了在Java平臺上對COM程式的呼叫。DLL動態連結庫的生成需要win

Java:ExcelPDF實現方案;基於POI與Itext進行搭配.

由於此份文章比較久遠並且發現點選率也蠻高的,為了方便大夥的測試與研究我另外建立 了一份程式碼倉庫在GitHub中,請大夥直接從這個地址拉取: https://github.com/caryyu/excel2pdf 注意!注意!注意!分隔線以下的程式碼比較久遠了,最新