Java建立寫入word文件圖片和文字
阿新 • • 發佈:2019-02-16
需要的jar
<!-- 寫word --> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext-rtf</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
package com.test; import java.awt.Color; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; import com.lowagie.text.BadElementException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.FontFactory; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.rtf.RtfWriter2; public class WordTest { public static void main(String[] args) { exportDoc(); } /** * * @Description: 將網頁內容匯出為word @param @param file @param @throws * DocumentException @param @throws IOException 設定檔案 @return void * 返回型別 @throws */ public static String exportDoc() { try { // 設定紙張大小 Document document = new Document(PageSize.A4); // 建立一個書寫器(Writer)與document物件關聯,通過書寫器(Writer)可以將文件寫入到磁碟中 // ByteArrayOutputStream baos = new ByteArrayOutputStream(); // C:\\Users\\orion\\Desktop\\home.jpg File file = new File("C:\\Users\\orion\\Desktop\\qwe.doc"); RtfWriter2.getInstance(document, new FileOutputStream(file)); document.open(); // 設定中文字型 BaseFont bfChinese = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); // 標題字型風格 // Font titleFont = new Font(bfChinese, 12, Font.BOLD); // Paragraph title = new Paragraph("測試結果"); // 設定標題格式對齊方式 // title.setAlignment(Element.ALIGN_CENTER); // title.setFont(titleFont); // document.add(title); // 正文字型風格 Font contextFont = new Font(bfChinese, 12, Font.BOLD); // Font contextFont = new Font(bfChinese, 11, Font.NORMAL); List<String> list = new ArrayList<>(); list.add("a"); list.add("a"); list.add("a"); list.add("a"); list.add("a"); list.add("a"); list.add("a"); list.add("a"); list.add("a"); for (String string : list) { // code String code = "code : "; Paragraph codeStyle = new Paragraph(code); // 正文格式左對齊 codeStyle.setAlignment(Element.ALIGN_LEFT); codeStyle.setFont(contextFont); // 離上一段落(標題)空的行數 codeStyle.setSpacingBefore(20); // 設定第一行空的列數 // context.setFirstLineIndent(0); document.add(codeStyle); // 操作 String codeContent = "點選"; Paragraph codeContentStyle = new Paragraph(codeContent, FontFactory .getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(0, 0, 255))); // 離上一段落(標題)空的行數 codeContentStyle.setSpacingBefore(5); document.add(codeContentStyle); // result String result = "result :"; Paragraph resultStyle = new Paragraph(result); // 正文格式左對齊 resultStyle.setAlignment(Element.ALIGN_LEFT); resultStyle.setFont(contextFont); // 離上一段落空的行數 resultStyle.setSpacingBefore(10); // 設定第一行空的列數 // context.setFirstLineIndent(0); document.add(resultStyle); // 利用類FontFactory結合Font和Color可以設定各種各樣字型樣式 // 結果 String resultContent = "成功"; Paragraph resultContentStyle = null; if (resultContent.equals("成功")) { resultContentStyle = new Paragraph(resultContent, FontFactory .getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(0, 255, 0))); } else { resultContentStyle = new Paragraph(resultContent, FontFactory .getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(255, 0, 0))); } // 離上一段落空的行數 resultContentStyle.setSpacingBefore(5); document.add(resultContentStyle); // 新增圖片 Image.getInstance即可以放路徑又可以放二進位制位元組流 String imgPath = "C:\\Users\\orion\\Desktop\\home.jpg"; Image img = Image.getInstance(imgPath); img.setAbsolutePosition(0, 0); img.setAlignment(Image.ALIGN_CENTER);// 設定圖片顯示位置 img.scalePercent(30);// 表示顯示的大小為原尺寸的50% // img.scaleAbsolute(60, 60);// 直接設定顯示尺寸 // img.scalePercent(25, 12);//影象高寬的顯示比例 // img.setRotation(30);//影象旋轉一定角度 document.add(img); String log = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; if (log != null && !"".equals(log)) { Paragraph exceptionStyle = new Paragraph("異常資訊 :"); // 正文格式左對齊 exceptionStyle.setAlignment(Element.ALIGN_LEFT); exceptionStyle.setFont(contextFont); // 離上一段落空的行數 exceptionStyle.setSpacingBefore(20); document.add(exceptionStyle); document.add(new Paragraph(log, FontFactory.getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10, Font.NORMAL))); } } document.close(); // 得到輸入流 // wordFile = new ByteArrayInputStream(baos.toByteArray()); // baos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (BadElementException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } }