1. 程式人生 > >將word文件轉換為html、PDF等

將word文件轉換為html、PDF等

在日常工作中我們常常要把資料匯入word後,在做列印功能,一般列印在前臺做的話會比在後臺做客戶體驗更好一些,這個時候交給前臺最好是html、pdf、或圖片格式的資料,我的另一篇部落格中講解了怎麼將PDF轉換成圖片,並且可以調整清晰度。
這些方法都是我在工作學習中在網路上借鑑各位前輩的經驗程式碼,總結而來,給大家提供個方便,如有侵權請聯絡博主刪除,謝謝。

一、 將word轉化為html
依賴jar包
依賴jar包

/**
            * @Title convert2Html
            * @description 生成合同
            * @param
src file 讀取的檔案 * @param outPutFile File 輸出的檔案 * @param encoding String * @return String */
public static String convert2Html(File src, File outPutFile, String encoding) throws TransformerException, IOException, ParserConfigurationException { HWPFDocument wordDocument = new
HWPFDocument(new FileInputStream(src)); 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 ) { return "test/"+suggestedName; //儲存圖片的目錄 } } ); wordToHtmlConverter.processDocument(wordDocument); //save pictures List pics=wordDocument.getPicturesTable().getAllPictures(); if(pics!=null){ for(int i=0;i<pics.size();i++){ Picture pic = (Picture)pics.get(i); try { pic.writeImageContent(new FileOutputStream("test/" + pic.suggestFullFileName())); } catch (FileNotFoundException e) { e.printStackTrace(); } } } /***********************************end 圖片********************/ Document htmlDocument = wordToHtmlConverter.getDocument(); ByteArrayOutputStream out = new ByteArrayOutputStream(); DOMSource domSource = new DOMSource(htmlDocument); StreamResult streamResult = new StreamResult(out); TransformerFactory tf = TransformerFactory.newInstance(); Transformer serializer = tf.newTransformer(); //serializer.setOutputProperty(OutputKeys.ENCODING, "gbk"); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); serializer.setOutputProperty(OutputKeys.METHOD, "html"); serializer.transform(domSource, streamResult); out.close(); String content ="";// "<%@ page pageEncoding=\"gbk\"%>"; content += new String(out.toByteArray()); content=content.replace("<head>", "<head><title>" + "P2P網際網路居間平臺</title><link rel=\"shortcut icon\" href=\"favicon.ico\" type" + "=\"image/x-icon\"/>"); writeFile(content, outPutFile); return content; } /** * @Title writeFile * @description 使用輸出流列印一份檔案 * @param content 檔案內容 * @param file 輸出的檔案路徑 */ public static void writeFile(String content, File file) { FileOutputStream fos = null; BufferedWriter bw = null; try { fos = new FileOutputStream(file); bw = new BufferedWriter(new OutputStreamWriter(fos)); bw.write(content); } catch (FileNotFoundException fnfe) { fnfe.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } finally { try { if (bw != null) bw.close(); if (fos != null) fos.close(); } catch (IOException ie) { } } }

二、將word轉換成PDF
依賴jar包
依賴jar包

/**
            * word轉為PDF
            */
           public synchronized static void doc2pdf(String orgAddr,String newAdd) {

                if (!getLicense()) { //驗證License 若不驗證則轉化出的pdf文件會有水印產生
                    return;
                }
                try {
                    long old = System.currentTimeMillis();
                    File file = new File(newAdd); // 新建一個空白pdf文件
                    FileOutputStream os = new FileOutputStream(file);
                    com.aspose.words.Document doc = new com.aspose.words.Document(orgAddr); // Address是將要被轉化的word文件
                    doc.save(os, SaveFormat.PDF);// 全面支援DOC, DOCX, OOXML, RTF HTML,
                                                    // OpenDocument, PDF, EPUB, XPS, SWF
                                                    // 相互轉換
                    long now = System.currentTimeMillis();
                    System.out.println("共耗時:" + ((now - old) / 1000.0) + "秒"); // 轉化用時
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

           /**
            * 驗證License 若不驗證則轉化出的pdf文件會有水印產生
            * @return
            */
           public static boolean getLicense() {
                boolean result = false;
                try {
                String iss =  WordUtil.class.getClassLoader().getResource("//").getPath()+"PgPubk.key";
                    InputStream is = ReadLicense.getStringInputStream();
                             //WordUtil.class.getClassLoader().getResourceAsStream("license.xml");// 
                    System.out.println("PATH:   ");
                    License aposeLic = new License();
                    aposeLic.setLicense(is);
                    result = true;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return result;
            }

用這個編輯器,程式碼格式不好調整,看著怪怪的,大家湊合著看吧。