1. 程式人生 > >itext使用html標籤生成pdf檔案

itext使用html標籤生成pdf檔案

使用itext5通過html文字生成pdf檔案

需要jar包

		<!-- itext5 start -->
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itextpdf</artifactId>
		    <version>5.5.10</version>
		</dependency>
		
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itext-asian</artifactId>
		    <version>5.2.0</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf.tool</groupId>
			<artifactId>xmlworker</artifactId>
			<version>5.5.11</version>
		</dependency>
		<!-- itext5 end -->


package com.gehouse.smartdevice.controller;


import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.nio.charset.Charset;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontProvider;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;

public class Itext5HtmlToPDF {

	public static void main(String[] args) {
		new Itext5HtmlToPDF().createPdf();
	}
	
	public void createPdf() {
		try {
			BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
			Font font = new Font(bfChinese, 12, Font.NORMAL);
			
			Document document = new Document(PageSize.A4, 10, 10, 10, 10);
			PdfWriter mPdfWriter = PdfWriter.getInstance(document, new FileOutputStream("C://Users/miju/Desktop/htmltest.pdf"));
			document.open();
			
			document.add(new Paragraph("建立pdf檔案.支援中文......", font));
			
			String s = getHtml();
			ByteArrayInputStream bin = new ByteArrayInputStream(s.getBytes());
			XMLWorkerHelper.getInstance().parseXHtml(mPdfWriter, document, bin, Charset.forName("UTF-8"), new ChinaFontProvide());
			document.close();
			mPdfWriter.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static String getHtml() {
		
		StringBuffer html = new StringBuffer();
		html.append("<div style='color:green;font-size:20px;'>你好世界!hello world !</div>");
		html.append("<span style='color:red'>what are you 弄啥咧!</span>");
		html.append("<h1>標題</h1>");
		html.append("<table>");
		html.append("<tr>");
		html.append("<th>序號</th>");
		html.append("<th>使用者名稱</th>");
		html.append("<th>性別</th>");
		html.append("</tr>");
		html.append("<tr>");
		html.append("<td>1</td>");
		html.append("<td>fengxing</td>");
		html.append("<td>男</td>");
		html.append("</tr>");
		html.append("<tr>");
		html.append("<td>2</td>");
		html.append("<td>admin</td>");
		html.append("<td>女</td>");
		html.append("</tr>");
		html.append("</table>");
		return html.toString();
	}

	/**
	 * 
	 * 提供中文
	 * 
	 */
	public static final class ChinaFontProvide implements FontProvider {

		@Override
		public Font getFont(String arg0, String arg1, boolean arg2, float arg3,
				int arg4, BaseColor arg5) {
			BaseFont bfChinese = null;
			try {
				bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
						BaseFont.NOT_EMBEDDED);
			} catch (Exception e) {
				e.printStackTrace();
			}
			Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
			return FontChinese;
		}

		@Override
		public boolean isRegistered(String arg0) {
			return false;
		}
	}
}


參考:http://blog.csdn.net/a1215656324/article/details/40346887

相關推薦

itext使用html標籤生成pdf檔案

使用itext5通過html文字生成pdf檔案 需要jar包 <!-- itext5 start --> <dependency> <groupId>com.itextpdf</groupId>

福利!NodeJs爬取網路教程並生成PDF檔案,以阮一峰JavaScript教程和ES6教程為例(附原始碼和PDF檔案

前言 你想一夜暴富嗎?你想一夜成名嗎?你想開蘭博基尼泡妞嗎?你想拿鈔票點菸嗎?你想成為世界主宰嗎?那麼,趕緊往下看吧,雖然它不能達成前面所說的任 何一個夢想,但是,你將獲得: 通過命令列將某網站的內容轉成PDF檔案 通過NodeJS爬蟲將某網路教程(例如阮一峰的JavaScript教程和ES6教

生成PDF檔案方案--學習中

PDF檔案是目前比較流行的電子文件格式,在辦公自動化(OA)等軟體的開發中,經常要用到該格式,但介紹如何製作PDF格式檔案的資料非常少,在網上搜來搜去,都轉貼的是同一段“暴力”破解的方法,程式碼片斷如下: StreamWriter pPDF=new StreamWriter(filePath);

ASP. NET MVC專案 使用iTextSharp將網頁程式碼生成PDF檔案

/// <summary> /// 獲取MVC檢視Html /// </summary> /// <param name="context">控制器上下文</param> ///

解決iText生成pdf檔案過大的問題

為iText生成的pdf檔案瘦身。 原來生成pdf檔案,即使是純文字內容,無論內容再如何少,檔案體積總是在7M多,導致傳輸速度很慢。經排查,是在pdf生成的時候,選用了第三方中文字型造成的。 原生成

java將資料庫資料轉換成word文件並且生成pdf檔案最後轉換成對應的圖片

目的:將資料轉換成word圖片的方式展現給使用者 工具:openoffice +java程式碼 +資料庫,其中openoffice有windows版本的和Linux版本的。 其中openoffice的下載地址為:連結:https://pan.baidu.com/s/1Y5Ra3TfNCc

前端生成pdf檔案之pdfmake.js

 轉載:點選檢視原文 pdfmake.js是一個簡單的生成pdf檔案的外掛。 pdfmake.js     https://files.cnblogs.com/files/s313139232/pdfmake.min.js 程式碼也很簡單: html檔案:

django 動態生成PDF檔案

可以通過開源的Python PDF庫ReportLab來實現PDF檔案的動態生成。 一、安裝ReportLab ReportLab庫在PyPI上提供,可以使用pip來安裝: $ pip install reportlab 在Python互動直譯器中匯入它來測試安裝: >&g

從inputstream中讀pdf生成pdf檔案

public static void main(String[] args) { System.out.println(FileUtils.exists("invoice/2017011817151260118001.pdf")); System.out.p

winform 把視窗上的全部資訊生成PDF檔案顯示

 using System; using System.IO; using System.Text; using System.Collections; namespace PDFGenerator  { //生成pdf的類 public class PDF

Latex 通過生成dvi檔案 生成pdf檔案

網上很多LaTeX生成PDF的教程,一般都是選單欄選擇“pdfLaTeX”即可。 不過也不知道是我下載的ctex不完整還是怎樣,我用這個選項的時候,不是不能生成pdf,就是超級慢。 所以我個人還是比較推崇傳統的方法:先生成dvi,在生成pdf。 直接在winEdt

Java應用iText動態生成PDF檔案

{             /** */ /**              * 例項化文件物件 第一個引數是頁面大小。接下來的引數分別是左、右、上和下頁邊距。但是還沒有定義該文件的型別。             * 它取決於所建立的寫入器的型別。對於我們的示例,選擇了com.lowagie.text.pdf.

用jspdf實現頁面下載生成pdf檔案

一路辛酸就不多說了,經歷了各種嘗試,最後終於搞定,直接貼程式碼: function pdfCreater(){   html2canvas(document.body, {    onrendered: function(canvas) {var imgData = canvas.toDataURL();/

WinEdt7生成PDF檔案中的一些使用體會

    由於在一個月之後要用到PPT展示,因此特地從網上下載了WinEdt7準備一顯身手,然後卻在生成PDF時出了問題。 原始碼是用Latex的語言寫的,但是在編譯時卻變成了PDFTex, 後來檢查後發現呼叫的檔案出錯了,應該用Latex.exe . 具體修改方法是opti

使用doxygen和latex生成PDF檔案

ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版windows版本:win10LaTeX版本:CTeX windows版doxygen版本:linux版-

使用iText生成PDF檔案

  iText是著名的開放原始碼的站點sourceforge一個專案,是用於生成PDF文件的一個java類庫。通過iText不僅可以生成PDF或rtf的文件,而且可以將XML、Html檔案轉化為PDF檔案。   專案要使用iText,必須引入jar包。才能使用,mav

使用ABAP和JavaScript程式碼生成PDF檔案的幾種方式

ABAP 方法1:使用ABAP + Adobe Lifecycle Enterprise Service 方法2:使用ABAP Webdynpro裡的InteravtiveForm控制元件 + Adobe Form Template

單個或者多個jasper檔案生成PDF檔案

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import

JasperReport結合JasperReport Studio工具,生成Pdf檔案,解決中文不顯示問題

專案結構圖: 該專案為Maven專案: pom.xml 如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

Android生成PDF檔案、webview載入本地PDF或者網路PDF

生成pdf Andrid端生成PDF侷限性太差,尚未有優雅的解決方案。但網上眾說紛紜,實踐者少之又少,高質量的博文也是鳳毛麟角,大家都是博文搬用工,也沒有誰做過詳細的探索。筆者就自己的一點經驗做點分享。 使用iText iText不支援中文,要