Java iText 將 HTML 語法轉換成 PDF 文件

這裡介紹 Java 如何利用 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("<html><body>");
simpleHtmlCode.append( "你好, 歡迎光臨<br/>" );
simpleHtmlCode.append( "我是 <font color='#0000FF'>昭佑.天翔</font><br/>" );
simpleHtmlCode.append( "祝你 新年快樂 !!<br/>" );
simpleHtmlCode.append( "<br/>" );
simpleHtmlCode.append( "<table border='1' cellspacing='0' cellpadding='0' width='100%'>"
+ "<tr>"
+ "<td height='100' valign='top'>歡迎光臨</td>"
+ "<td height='100' align='right'>Hello World</td>"
+ "</tr>"
+ "<tr>"
+ "<td colspan='2' height='300' bgColor='#FFFF00'> 歡迎<font color='#0000FF'>光臨</font></td>"
+ "</tr>"
+ "</table>"
);
simpleHtmlCode.append("</body></html>");

// 將 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();
%>

範例結果 :


天聖經:神的心不僅在神的聖言當中,也在神所創造的萬物之中,天涯海角每一處都有神的心
Related Posts Plugin for WordPress, Blogger...