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

<!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.lowagie/itext-rtf -->
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext-rtf</artifactId>
        <version>2.1.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext-asian</artifactId>
        <version>5.2.0</version>
    </dependency>

/**   

  * 創建word文檔 步驟:    

  * 1,建立文檔    

  * 2,創建一個書寫器    

  * 3,打開文檔    

  * 4,向文檔中寫入數據    

  * 5,關閉文檔   

  */   

/**
    *
    * @Description: 將網頁內容導出為word
    * @param @param file
    * @param @throws DocumentException
    * @param @throws IOException 設定文件
    * @return void 返回類型
    * @throws
    */
   public static 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(BaseFont.HELVETICA,
                  BaseFont.WINANSI, 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即可以放路徑又可以放二進制字節流
       //


       Image img = Image.getInstance("D:\\eclipseWorkspace\\wordTest\\01055378_0.jpg");

       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 "";

   }

轉自:http://www.cnblogs.com/lionelwu-qianqian/archive/2013/05/31/3110581.html


免責聲明!

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



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