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

SWFTools 完整教程:PDF 轉 SWF、圖片/字體/音頻轉換、參數詳解與中文支持

     編輯:更多程式設計知識

SWFTools 是一套開源命令行工具集,專注於各類文件向 Flash SWF 格式轉換。雖然 Flash 已退出歷史舞台,但在舊系統遷移、電子檔案歸檔、離線文檔瀏覽等場景仍有價值。本文系統整理各工具用法、核心參數、中文 PDF 轉換方案及常見問題。

工具組件速查

工具功能典型用法
pdf2swfPDF → SWF (基於 xpdf,中文支持佳)pdf2swf -o out.swf in.pdf
jpeg2swf多張 JPEG → SWF 幻燈片jpeg2swf -o slide.swf 1.jpg 2.jpg
png2swfPNG 版幻燈片同上
gif2swfGIF → SWF (支持動畫)gif2swf -o anim.swf anim.gif
font2swf字體文件 → SWF (供 Flash 運行時嵌入)font2swf -o font.swf simsun.ttf
wav2swfWAV → SWF (需 LAME MP3 編碼器)wav2swf -o sound.swf audio.wav
swfcombine合併 SWF (如注入導航欄模板)swfcombine -o final.swf -T template.swf page.swf
swfstrings提取 SWF 文本 (swf2text)swfstrings doc.swf > text.txt
swfbbox調整/顯示 SWF 邊界框swfbbox doc.swf

核心工具 pdf2swf 參數詳解

一級參數 (常用)

-o, --output file.swf       指定輸出文件 (含 %d 可分頁輸出 page%d.swf)
-p, --pages range             頁碼範圍 (1-20, 1,4,6, 9-11)
-P, --password pwd            PDF 打開密碼
-v, --verbose                 詳細輸出 (可疊加 -vv)
-z, --zlib                    啟用 Flash 6 zlib 壓縮 (減小體積)
-i, --ignore                  允許改變繪製順序 (可能異於原 PDF)
-j, --jpegquality N           嵌入 JPEG 質量 0-100 (默認 85)
-s, --set param=value         設置 SWF 編碼器參數 (見下)
-w, --samewindow              超鏈接在同窗口打開
-t, --stop                    每頁末尾插入 stop() 動作
-T, --flashversion N          設置 SWF 版本號 (如 9)
-F, --fontdir dir             追加字體搜索目錄
-b, --defaultviewer           內置標準查看器 (翻頁/縮放)
-l, --defaultloader           內置預加載器
-B, -L                        指定自定義查看器/預加載器文件
-q, --quiet                   抑制普通輸出 (-qq 抑制警告)
-S, --shapes                  全部轉為形狀 (不嵌入字體)
-f, --fonts                   嵌入完整字體 (不僅用到的字符)
-G, --flatten                 合併剪輯層
-I, --info                    僅顯示 PDF 頁面信息,不轉換
-Q, --maxtime N               超時中斷 (僅 Unix)

二級參數 -s 關鍵設置

internallinkfunction=func | 內部鏈接點擊回調 JS 函數 |externallinkfunction=func | 外部鏈接點擊回調 JS 函數 |
參數作用
zoom=72渲染分辨率 DPI (默認 72,增大可提高清晰度)
languagedir=path指定 xpdf 語言包目錄 (中文必需)
font=file追加字體文件
pages=range同 -p
poly2bitmap矢量圖形轉位圖 (減小體積、修復渲染異常)
bitmap全部內容光柵化 (含字體)
storeallcharacters嵌入字體全字符集
enablezlib啟用 zlib 壓縮 (同 -z)
bboxvars導出邊界框變量供 AS 讀取
insertstop每幀插入 stop() (同 -t)
protect添加 protect 標簽防反編譯
flashversion=9設置最低播放器版本
framerate=12設置幀率
jpegquality=85同 -j
splinequality=100樣條曲線轉換質量
disablelinks禁用所有超鏈接

中文 PDF 轉換完整步驟 (解決亂碼/缺字)

  1. 下載 SWFTools (Windows 安裝包或源碼編譯)。
  2. 下載 xpdf 中文包:xpdf-chinese-simplified.tar.gz。
  3. 下載中文字體:simsun.ttc (宋體)、simhei.ttf (黑體) 等。
  4. 解壓 xpdf 至任意目錄 (如 D:\xpdf),將字體文件複製到 D:\xpdf\chinese-simplified\CMap\。
  5. 修改 D:\xpdf\xpdfrc 與 D:\xpdf\chinese-simplified\add-to-xpdfrc,將所有路徑改為本地絕對路徑 (如 cidToUnicode D:/xpdf/chinese-simplified/CMap/Adobe-GB1...)。
  6. 執行轉換命令:
pdf2swf -o output.swf -t input.pdf -s languagedir=D:\xpdf\chinese-simplified

關鍵點:-s languagedir 必須指向包含 CMap 目錄的 xpdf 語言包根目錄,且字體文件已放入 CMap。

常見問題與優化

  • 生成 SWF 體積過大:添加 -z (zlib) + -s enablezlib + -j 60 降低 JPEG 質量 + -s poly2bitmap 將複雜矢量光柵化。
  • 字體缺失/顯示方框:確認 -F 或 -s fontdir 指向包含中文字體的目錄,或使用 -f 嵌入全字體 (體積增大)。
  • 超鏈接失效:PDF 內部鏈接需 -s internallinkfunction=myFunc 配合 AS 代碼處理;外部鏈接同理。
  • 多頁 PDF 單文件翻頁:使用 -b 內置查看器,或 -B custom_viewer.swf 自定義導航欄。
  • 批量轉換腳本:PowerShell/Bash 循環調用,配合 -q 靜默模式。

現代替代方案

Flash 已停止支持,新項目建議採用:

  • PDF.js:純 JS 渲染 PDF,瀏覽器原生支持,無插件。
  • pdf2htmlEX:PDF → 高保真 HTML+CSS,可離線瀏覽。
  • ImageMagick / Ghostscript:PDF → 圖片序列 (PNG/JPG),再由前端輪播組件展示。
  • 商業方案:Foxit PDF SDK、PDFTron WebViewer,功能完善、技術支持好。

若必須維護 SWF 舊系統,本教程參數表可作為離線速查手冊;否則請規劃遷移至現代 Web 標準棧。

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