java在線word預覽


這個是一個比較簡單的word轉換成html來進行在線預覽

封成了一個util,代碼如下

public class WordToHtmlUtils {


    /**
     * @param wordPath  要轉換文件的絕對路徑
     * @param htmlName 生成的html文件名
     * @param relativelyPath 存放的相對路徑 /insfile/wordtohtml/
     * @param aimsFilePath  存放的文件名 wordtohtml
     * @return
     * @throws IOException
     */
    public static String  Word2007ToHtml(String wordPath, String htmlName, String relativelyPath, String aimsFilePath) throws IOException {

        //靜態資源路徑,用來存放生成的的html和圖片的
        String filepath = App.FILE_SYS+File.separatorChar+aimsFilePath+File.separatorChar ;
        File f = new File(wordPath);
        if (!f.exists()) {
            System.out.println("Sorry File does not Exists!");
        } else {
            if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {
                // 1) 加載word文檔生成 XWPFDocument對象
                InputStream in = new FileInputStream(f);
                XWPFDocument document = new XWPFDocument(in);
                // 2) 解析 XHTML配置 (這里設置IURIResolver來設置圖片存放的目錄)
                File imageFolderFile = new File(filepath);
                XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile));
                options.setExtractor(new FileImageExtractor(imageFolderFile));
                options.setIgnoreStylesIfUnused(false);
                options.setFragment(true);

                //這里可以替換生成的圖片為相對路徑
                options.URIResolver(new IURIResolver() {

                    //這個uri就是圖片在aimsFilePath下的相對路徑
            //如果在線預覽沒有顯示圖片,在這里看看
@Override public String resolve(String uri) { return relativelyPath + uri;//返回圖片url } }); // 3) 將 XWPFDocument轉換成XHTML OutputStream out = new FileOutputStream(new File(filepath + htmlName)); XHTMLConverter.getInstance().convert(document, out, options); //也可以使用字符數組流獲取解析的內容 // ByteArrayOutputStream baos = new ByteArrayOutputStream(); // XHTMLConverter.getInstance().convert(document, baos, options); // String content = baos.toString(); // System.out.println(content); // baos.close(); } else { System.out.println("Enter only MS Office 2007+ files"); } } return relativelyPath+htmlName; } /** * @param wordPath 要轉換文件的絕對路徑 * @param htmlName 生成的html文件名 * @param relativelyPath 存放的相對路徑 /insfile/wordtohtml/ * @param aimsFilePath 存放的文件名 wordtohtml * @param imageFile 存放圖片的目錄 doc * @return * @throws IOException * @throws TransformerException * @throws ParserConfigurationException */ public static String Word2003ToHtml(String wordPath, String htmlName, String relativelyPath, String aimsFilePath, String imageFile) throws IOException, TransformerException, ParserConfigurationException { final String imagepath = App.FILE_SYS+File.separator+aimsFilePath+File.separator+imageFile+File.separator;//解析時候如果doc文件中有圖片 圖片會保存在此路徑 String filepath = App.FILE_SYS+File.separatorChar+aimsFilePath+File.separatorChar ; final String file =wordPath; InputStream input = new FileInputStream(new File(file)); HWPFDocument wordDocument = new HWPFDocument(input); WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); //設置圖片存放的位置 wordToHtmlConverter.setPicturesManager(new PicturesManager() { public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) { File imgPath = new File(imagepath); if(!imgPath.exists()){//圖片目錄不存在則創建 imgPath.mkdirs(); } File file = new File(imagepath + suggestedName); try { OutputStream os = new FileOutputStream(file); os.write(content); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return relativelyPath+File.separator+imageFile+File.separator+ suggestedName; } }); //解析word文檔 wordToHtmlConverter.processDocument(wordDocument); Document htmlDocument = wordToHtmlConverter.getDocument(); File htmlFile = new File(filepath + htmlName); OutputStream outStream = new FileOutputStream(htmlFile); //也可以使用字符數組流獲取解析的內容 // ByteArrayOutputStream baos = new ByteArrayOutputStream(); // OutputStream outStream = new BufferedOutputStream(baos); DOMSource domSource = new DOMSource(htmlDocument); StreamResult streamResult = new StreamResult(outStream); TransformerFactory factory = TransformerFactory.newInstance(); Transformer serializer = factory.newTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); serializer.setOutputProperty(OutputKeys.METHOD, "html"); serializer.transform(domSource, streamResult); //也可以使用字符數組流獲取解析的內容 // String content = baos.toString(); // System.out.println(content); // baos.close(); outStream.close(); return relativelyPath+File.separator+htmlName; } }

//圖片存放路徑根據自己需求來修改,支持doc, docx


免責聲明!

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



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