Thursday, April 8, 2010

iText將 HTML 語法轉換成 PDF 文件


<%@page import="java.io.*" %>
<%@page import="java.net.*" %>
<%@page import="java.util.ArrayList" %>
<%@page import="com.lowagie.text.*" %>
<%@page import="com.lowagie.text.pdf.*" %>
<%@page import="com.lowagie.text.html.simpleparser.*" %>
<%@page contentType="application/pdf;charset=Big5" %>

<%
Document document = document = new Document( PageSize.A4, 0, 0, 0, 0 );

try
{
PdfWriter.getInstance( document, new FileOutputStream( request.getRealPath("") + "/1.pdf" ) );
document.open();

// HTML 語法
StringBuffer simpleHtmlCode = new StringBuffer("");
simpleHtmlCode.append( "你好, 歡迎光臨
" );
simpleHtmlCode.append( "我是 昭佑.天翔
" );
simpleHtmlCode.append( "祝你 新年快樂 !!
" );
simpleHtmlCode.append( "
" );
simpleHtmlCode.append( ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ "
歡迎光臨Hello World
歡迎光臨
"
);
simpleHtmlCode.append("");

// 將 StringBuffer 轉換成 StringReader
StringReader stringReader = new StringReader(simpleHtmlCode.toString());

// 載入字型
FontFactory.register( request.getRealPath("") + "/Font/kaiu.ttf" );

// 設定 HTML 標籤樣式
StyleSheet st = new StyleSheet();
st.loadTagStyle("body", "face", "標楷體"); // 字型
st.loadTagStyle("body", "size", "8px"); // 字體大小
st.loadTagStyle("body", "encoding", "Identity-H"); // 顯示中文字

// 產生 HTML 轉換物件
HTMLWorker worker = new HTMLWorker(document);

// 輸出 HTML 到 PDF
ArrayList p = HTMLWorker.parseToList( stringReader, st );
for( int k = 0; k < p.size(); k++ )
document.add((Element)p.get(k));

document.close();

response.sendRedirect( "1.pdf" );
}
catch(Exception e)
{
out.println( "錯誤 : "+ e.toString() );
}

document.close();
%>