使用JAVA(iText)生成word(rtf)文件---內容可含圖片哦

iteye_9300發表於2010-03-24

 

當我使用這個JAVA生成RTF檔案時費了好大的勁,原本是想生成WORD文件的,但是WORD文件POI只支援往生成的


WORD中填入文字,對於圖片根本就不支援。後來想想,RTF格式的也可用WORD開啟,不如生成RTF。結果上網搜


了很多技術,Itext,jacob,java2word,rtftemplate,reportrunner看了近一天也沒什麼頭緒,寫這些示例的幾


乎沒有,還好Itext的例子有那麼幾個,可是我上官網下了最新核心包後發現,匯入例子中居然全部紅叉,原


本以為上錯網站了,再經過核實還是對的,於是斷定網上的例子肯定有誤,itext或許不能用。繞了大半天其


他的技術我真的沒法弄了,還是回到了iText,靜下心來思考覺得包肯定有問題,仔細一看原來最新版的是支


持PDF版的iText-5.0.1.jar是不對的,本來以為最新的功能最全了,沒想到錯了,想到這裡趕緊下了稍微


iText-2.1.7.jar結果終於成功了,感慨不已!現貢獻程式碼如下


記住官網上只能下到核心包:iText-1.2.7.jar和支援rtf的iText-rtf-2.1.7.jar這兩個貌似對了,其實還有


一個包是比較重要的iTextAsian.jar這個包對於設定字型什麼的起了關鍵作用上網可以搜到的

 

官方網站:http://sourceforge.net/projects/itext/files/

 

程式碼如下

 

public class RTFCreate {

private static final String FILE_NAME = "e:/JAVA第一個RTF文件生成.rtf";

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

RTFCreate rtfMain = new RTFCreate();

rtfMain.createRTFContext(FILE_NAME);




} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}




public void createRTFContext(String path) throws DocumentException,

IOException {

Document document = new Document(PageSize.A4);

RtfWriter2.getInstance(document, new FileOutputStream(path));

document.open();

// 設定中文字型

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

// 標題字型風格

Font titleFont = new Font(bfChinese, 12, Font.BOLD);




// 正文字型風格

Font contextFont = new Font(bfChinese, 10, Font.NORMAL);




Paragraph title = new Paragraph("標題");

// 設定標題格式對齊方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);




String contextString = "iText是一個能夠快速產生PDF檔案的java類庫。iText的java類對於那些要產生包含文字,表格,圖形的只讀文件是很有用的。它的類庫尤其與java Servlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。";

Paragraph context = new Paragraph(contextString);

// 正文格式左對齊

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

// 離上一段落(標題)空的行數

context.setSpacingBefore(20);

// 設定第一行空的列數

context.setFirstLineIndent(20);




document.add(context);




// //在表格末尾新增圖片

Image png = Image.getInstance("c:/fruit.png");

document.add(png);

document.close();

}




}

 

 

 

 


 

相關文章