Java 實現word 中寫入文字圖片的解決方案


JAVA生成WORD文件的方法目前有以下兩種方式:

一種是jacob 但是局限於windows平台 往往許多JAVA程序運行於其他操作系統 在此不討論該方案;

一種是poi但是他的excel處理很程序 word模塊還局限於讀取word的文本內容,寫word文件就更弱項了.

用到的jar包: 
iText-2.1.5.jar
iText-rtf-2.1.4.jar
iTextAsian.jar

/**   

  * 創建word文檔 步驟:    

  * 1,建立文檔    

  * 2,創建一個書寫器    

  * 3,打開文檔    

  * 4,向文檔中寫入數據    

  * 5,關閉文檔   

  */   

/**
	 * 
	 * @Description: 將網頁內容導出為word
	 * @param @param file
	 * @param @throws DocumentException
	 * @param @throws IOException 設定文件
	 * @return void 返回類型
	 * @throws
	 */
	public String exportDoc() throws DocumentException, IOException {

		// 設置紙張大小

		Document document = new Document(PageSize.A4);

		// 建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁盤中
		// ByteArrayOutputStream baos = new ByteArrayOutputStream();

		File file = new File("D://report.doc");

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

		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類庫。"

		+ " \n"// 換行 + "iText的java類對於那些要產生包含文本,"

				+ "表格,圖形的只讀文檔是很有用的。它的類庫尤其與java Servlet有很好的給合。"

				+ "使用iText與PDF能夠使你正確的控制Servlet的輸出。";

		Paragraph context = new Paragraph(contextString);

		// 正文格式左對齊

		context.setAlignment(Element.ALIGN_LEFT);

		// context.setFont(contextFont);

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

		context.setSpacingBefore(5);

		// 設置第一行空的列數

		context.setFirstLineIndent(20);

		document.add(context);
		//
		// // 利用類FontFactory結合Font和Color可以設置各種各樣字體樣式
		//
		// Paragraph underline = new Paragraph("下划線的實現", FontFactory.getFont(
		// FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,
		// new Color(0, 0, 255)));
		//
		// document.add(underline);
		//

		// // 添加圖片 Image.getInstance即可以放路徑又可以放二進制字節流
		//

		String imageString[] = imageFileUrl.split(",");

		Image img = Image.getInstance(Base64.decodeFast(imageString[1]));

		img.setAbsolutePosition(0, 0);

		img.setAlignment(Image.LEFT);// 設置圖片顯示位置

		//
		// img.scaleAbsolute(60, 60);// 直接設定顯示尺寸
		//
		// // img.scalePercent(50);//表示顯示的大小為原尺寸的50%
		//
		// // img.scalePercent(25, 12);//圖像高寬的顯示比例
		//
		// // img.setRotation(30);//圖像旋轉一定角度
		//
		document.add(img);

		document.close();

		// 得到輸入流
		// wordFile = new ByteArrayInputStream(baos.toByteArray());
		// baos.close();
		return "";

	}

 生成的文檔可以直接在程序中指定文件保存的路徑,也可以給瀏覽器一個輸入流,從瀏覽器中導出,具體實現有如上述程序中注釋掉的幾句代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM