首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Word、Excel、PDF 文件轉 HTML 實戰方案總結

     編輯:Java 相關知識

專案開發中常需將 Office 文檔、PDF 轉為 HTML 以便網頁預覽。本文整理三種主流轉換方案:基於 Jacob 的 Word/Excel 轉換、基於 XPDF 的 PDF 轉 HTML、以及常見坑點與解決思路。

方案一:Jacob 實現 Word/Excel 轉 HTML

Jacob 是 Java-COM 橋接組件,可調用 Windows 上的 Office COM 組件實現轉換。

環境準備

  • JDK 1.5+ 需 Jacob 1.9 版;
  • Jacob.jar 加入 Classpath;
  • Jacob.dll 放入 WINDOWS\SYSTEM32 或 IDE 的 jre\bin(如 MyEclipse 啟動 Tomcat 時);
  • 缺少 DLL 會拋 UnsatisfiedLinkError: no jacob in java.library.path。

核心代碼

public class JacobUtil {
    public static final int WORD_HTML = 8;
    public static final int EXCEL_HTML = 44;

    public static void wordToHtml(String docFile, String htmlFile) {
        ActiveXComponent app = new ActiveXComponent("Word.Application");
        try {
            app.setProperty("Visible", new Variant(false));
            Dispatch docs = app.getProperty("Documents").toDispatch();
            Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
                new Object[]{docFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method,
                new Object[]{htmlFile, new Variant(WORD_HTML)}, new int[1]);
            Dispatch.call(doc, "Close", new Variant(false));
        } finally { app.invoke("Quit", new Variant[]{}); }
    }

    public static void excelToHtml(String xlsFile, String htmlFile) {
        ActiveXComponent app = new ActiveXComponent("Excel.Application");
        try {
            app.setProperty("Visible", new Variant(false));
            Dispatch wbs = app.getProperty("Workbooks").toDispatch();
            Dispatch wb = Dispatch.invoke(wbs, "Open", Dispatch.Method,
                new Object[]{xlsFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
            Dispatch.invoke(wb, "SaveAs", Dispatch.Method,
                new Object[]{htmlFile, new Variant(EXCEL_HTML)}, new int[1]);
            Dispatch.call(wb, "Close", new Variant(false));
        } finally { app.invoke("Quit", new Variant[]{}); }
    }
}

關鍵細節:輸出路徑必須包含具體檔名(如 C:\\AA\\xxx.html),僅指定目錄會失敗。

方案二:XPDF + pdftohtml 實現 PDF 轉 HTML

工具鏈準備

  1. 下載 xpdf-3.02pl2-win32.zip;
  2. 下載中文支援包 xpdf-chinese-simplified.tar.gz;
  3. 下載 pdftohtml-0.39-win32.tar.gz;
  4. 解壓合併至同一目錄(如 X:\xpdf),保留所需 exe 與字體映射檔。

配置 xpdfrc 字體映射

#----- begin Chinese Simplified support package
cidToUnicode Adobe-GB1 xpdf-chinese-simplified\Adobe-GB1.cidToUnicode
unicodeMap ISO-2022-CN xpdf-chinese-simplified\ISO-2022-CN.unicodeMap
unicodeMap EUC-CN xpdf-chinese-simplified\EUC-CN.unicodeMap
unicodeMap GBK xpdf-chinese-simplified\GBK.unicodeMap
cMapDir Adobe-GB1 xpdf-chinese-simplified\CMap
toUnicodeDir xpdf-chinese-simplified\CMap
fontDir C:\WINDOWS\Fonts
displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf
#----- end Chinese Simplified support package

封裝 BAT 腳本與 Java 調用

@echo off
set folderPath=%1
set filePath=%2
cd /d %folderPath%
pdftohtml -enc GBK %filePath%
exit
public class ConvertPdf {
    public static void convertToHtml(String file, String project) {
        if (file.toLowerCase().endsWith(".pdf")) {
            try {
                String cmd = "cmd /c start \"\" \"" + project + "\\pdftohtml.bat\" \"" + file + "\"";
                Runtime.getRuntime().exec(cmd);
            } catch (IOException e) { e.printStackTrace(); }
        }
    }
}

注意:路徑不能包含空格;生產環境建議改用成熟庫(如 Apache PDFBox、iText)或專用轉換服務,避免依賴外部進程帶來的穩定性風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved