首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Linux 部署 Java 程式使用 swftools 將 PDF 轉 SWF

     編輯:程式設計綜合問答

背景

Windows 開發環境已用 `swftools` (含 `pdf2swf.exe`) 實現 PDF 轉 SWF,需部署到 Linux 伺服器。

Linux 安裝 swftools 步驟

  1. 安裝依賴:
    # CentOS/RHEL
    yum install -y gcc gcc-c++ make zlib-devel libjpeg-devel giflib-devel freetype-devel fontconfig-devel
    
    # Ubuntu/Debian
    apt-get update && apt-get install -y build-essential libz-dev libjpeg-dev libgiflib-dev libfreetype6-dev libfontconfig1-dev
  2. 下載源碼編譯(swftools 0.9.2 以上版本):
    wget https://www.swftools.org/swftools-0.9.2.tar.gz
    tar -xzf swftools-0.9.2.tar.gz
    cd swftools-0.9.2
    ./configure --prefix=/usr/local/swftools
    make && make install
  3. 解決常見編譯錯誤:
    • `pdf2swf` 需 `xpdf`/`poppler` 支援中文字體:`./configure --with-xpdf=/usr/local/xpdf` 或安裝 `poppler-utils`。
    • 缺少 `libungif` → 安裝 `giflib-devel`。
    • 字體路徑:確保 `/usr/share/fonts` 有中文字體(如 `SimSun.ttf`、`Microsoft YaHei.ttf`),否則中文顯示方塊。
  4. 驗證安裝:
    /usr/local/swftools/bin/pdf2swf --version
    # 輸出版本號即成功

Java 調用方式

String cmd = "/usr/local/swftools/bin/pdf2swf -o " + swfPath + " " + pdfPath;
Process process = Runtime.getRuntime().exec(cmd);
int exitCode = process.waitFor();
if (exitCode != 0) {
    // 讀取 error stream 診斷
    try (BufferedReader br = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
        String line;
        while ((line = br.readLine()) != null) log.error(line);
    }
}

注意事項

  • 字體配置**:`pdf2swf` 需正確字體轉換中文。可建立 `fonts` 目錄並設定環境變數 `GDFONTPATH`。
  • 語言包**:`swftools` 包含 `locale` 目錄,確保部署時一同複製。
  • 替代方案**:考慮 `pdf2htmlEX` (HTML5)、`Apache PDFBox` (純 Java 渲染)、`FlexPaper` (前端檢視),避免依賴外部二進位工具。

結論

Linux 安裝 `swftools` 關鍵在**依賴庫完整**、**字體配置正確**、**編譯參數指定 xpdf/poppler 路徑**。Java 呼叫同 Windows,只需路徑改為 Linux 絕對路徑。

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