Mac編譯安裝swfTools

Mac編譯安裝swfTools

[TOC]

下載源碼

這里下載安裝的是swftools-0.9.2.tar.gz醉箕,具體的地址為:http://www.swftools.org/swftools-0.9.2.tar.gz
swftools-0.9.2.ta

解壓源碼

tar -xzvf swftools-0.9.2.tar.gz

安裝依賴(lài)項(xiàng)

# Linux/CentOS 安裝 這里沒(méi)有實(shí)際測(cè)試,需要自己去測(cè)試 這里只是一個(gè)記錄
yum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel

主要通過(guò)brew安裝一下四個(gè)包:lzlib秉溉、giflib腾它、jpeg跑筝、freetype
Mac版本安裝命令:

# 注意 lzlib 也許是不需要安裝的,這里沒(méi)有去測(cè)試
brew install lzlib
brew install giflib
brew install jpeg
brew freetype

./configure執(zhí)行配置或者執(zhí)行如下配置命令:

sudo LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure  --prefix=/usr/local/swftools

需要注意這里存在部分代碼錯(cuò)誤瞒滴,需要修改解決后執(zhí)行

一曲梗、char * 和 int比較導(dǎo)致的錯(cuò)誤, 需要修為文件

錯(cuò)誤信息:


錯(cuò)誤信息

swftools-0.9.2/lib/pdf/xpdf/GlobalParams.cc文件中修改

1 插入文件頭
#include <stdlib.h>
2 錯(cuò)誤處理代碼
(具體修改位置可以參考錯(cuò)誤提示)妓忍,原始代碼是直接使用變量做比較虏两,這里需要對(duì)變量調(diào)用atio函數(shù)后比較

修改結(jié)果展示

二、存在一些變量沒(méi)有定義的錯(cuò)誤

錯(cuò)誤信息:


錯(cuò)誤信息

文件swftools-0.9.2/lib/jpeg.c中存在部分變量沒(méi)有定義世剖,這里需要修改

修改前后代碼比較

修改后代碼:

//修改后代碼
#ifdef HAVE_JPEGLIB
#ifndef FALSE 
#define FALSE 0 
#endif
#ifndef TRUE
#define TRUE 1
#endif
#define HAVE_BOOLEAN
#include <jpeglib.h>

三定罢、存在一些方法參數(shù)數(shù)量錯(cuò)誤 以及 部分函數(shù)沒(méi)有定義問(wèn)題

報(bào)錯(cuò)信息:


報(bào)錯(cuò)信息

g)
解決方案:

修改文件swftools-0.9.2/src/gif2swf.c等內(nèi)容:

1.1 全局搜索DGifOpenFileNameDGifCloseFile調(diào)用
1.2 在存在調(diào)用上述兩個(gè)方法的地方,定義變量
c int Error;
并且修改調(diào)用為:
c DGifOpenFileName(sname, &Error)

修改前后代碼比較

注意:這里修改需要注意旁瘫,如果上述兩個(gè)方法在同一個(gè)方法中調(diào)用祖凫,只需定義一次變量即可

1.3 在當(dāng)前文件中全局搜索PrintGifError();琼蚯,將這行代碼刪除或注釋掉。

make編譯

make install安裝

開(kāi)發(fā)注意點(diǎn)

關(guān)于pdf2swf轉(zhuǎn)碼命令:

pdf2swf  -t "/Users/zhangxiong/project/qware/wbiot/mus/MS-FS-Server/tempFile/5bd8f9d8-185d-4d7b-9be8-1658441f784f.pdf" -o  "/Users/zhangxiong/project/qware/wbiot/mus/MS-FS-Server/tempFile/877a9f8d-dd7e-46a2-b431-cadd0ff36e44.swf" -s flashversion=9 -s languagedir=/Users/zhangxiong/devtools/xpdf/xpdf-chinese-simplified 

注意:如果是在Java的命令行執(zhí)行轉(zhuǎn)碼惠况,文件路徑和生成的路徑不能加雙引號(hào)遭庶,也就是以為這文件源路徑和目標(biāo)路徑不能有空格

Java代碼調(diào)用執(zhí)行文檔轉(zhuǎn)換代碼:

注意:如果是在Java的命令行執(zhí)行轉(zhuǎn)碼,文件路徑和生成的路徑不能加雙引號(hào)稠屠,也就是以為這文件源路徑和目標(biāo)路徑不能有空格

package cn;

import java.io.*;

/**
 * 將pdf轉(zhuǎn)化為swf文件
 *  需要工具 swftools -> pdf2swf
 *
 * @author 
 *
 */
public class Pdf2swfUtil {
    // pdf2swf 執(zhí)行文件路徑
    private static String pdftoswf = "devtools/swftools-0.9.2/src/pdf2swf";
    /** 
     * @param sourcePath  pdf原路徑
     * @param destPath    目的路徑
     * @param fileName    生成swf的文件名
     */
    public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws Exception {  
        //目標(biāo)路徑不存在則建立目標(biāo)路徑  
        File dest = new File(destPath);  
        if (!dest.exists()) dest.mkdirs();  
          
        //源文件不存在則返回  
        File source = new File(sourcePath);  
        if (!source.exists()) return 0;  
          
        //調(diào)用pdf2swf命令進(jìn)行轉(zhuǎn)換
        // 注意 這里的文檔輸入和文檔輸出路徑不能存在空格峦睡, 并且這里的命令中,路徑不能使用雙引號(hào)包住
        String command = pdftoswf + " -o " + destPath + fileName + "  -s flashversion=9 " + sourcePath + "";

        System.out.println(command);
        Process pro = Runtime.getRuntime().exec(command);

        final InputStream is1 = pro.getInputStream();
        new Thread(new Runnable() {
            public void run() {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(is1));
                StringBuffer sb = new StringBuffer(" ====================>>> \n");
                try {
                    String line = null;
                    while ((line = br.readLine()) != null) {
                        sb.append(line);
                    }
                    sb.append(" <<<<<<<========================================");
                    System.out.println(sb.toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start(); // 啟動(dòng)單獨(dú)的線程來(lái)清空process.getInputStream()的緩沖區(qū)

        final InputStream is2 = pro.getErrorStream();
        new Thread(new Runnable() {
            public void run() {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(is2));
                StringBuffer sb = new StringBuffer(" ====================>>> \n");
                try {
                    String line = null;
                    while ((line = br.readLine()) != null) {
                        sb.append(line);
                    }
                    sb.append(" <<<<<<<========================================");
                    System.out.println(sb.toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start(); // 啟動(dòng)單獨(dú)的線程來(lái)清空process.getInputStream()的緩沖區(qū)
        try {  
            pro.waitFor();  
        } catch (InterruptedException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
        return pro.exitValue();
          
    }  
      
    public static void main(String []args) throws Exception {
        // TODO: 2018/5/24 這里需要確定自己文檔的路徑和輸出路徑
        String sourcePath = "Downloads/編寫(xiě)高質(zhì)量代碼--Web前端開(kāi)發(fā)修煉之道.pdf";
        String destPath = "project/qware/refactor/";
        String fileName = "test.swf";  
        Pdf2swfUtil.convertPDF2SWF(sourcePath, destPath, fileName);
        File file = new File(destPath + fileName);
        if (!file.exists()) {
            throw new RuntimeException("not create file ");
        }
    }  
}  
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末权埠,一起剝皮案震驚了整個(gè)濱河市赐俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弊知,老刑警劉巖阻逮,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秩彤,居然都是意外死亡叔扼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)漫雷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓜富,“玉大人,你說(shuō)我怎么就攤上這事降盹∮敫蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵蓄坏,是天一觀的道長(zhǎng)价捧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)涡戳,這世上最難降的妖魔是什么结蟋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮渔彰,結(jié)果婚禮上嵌屎,老公的妹妹穿的比我還像新娘。我一直安慰自己恍涂,他們只是感情好宝惰,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著再沧,像睡著了一般尼夺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天汞斧,我揣著相機(jī)與錄音,去河邊找鬼什燕。 笑死粘勒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屎即。 我是一名探鬼主播庙睡,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼技俐!你這毒婦竟也來(lái)了乘陪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雕擂,失蹤者是張志新(化名)和其女友劉穎啡邑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體井赌,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谤逼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仇穗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片流部。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纹坐,靈堂內(nèi)的尸體忽然破棺而出枝冀,到底是詐尸還是另有隱情,我是刑警寧澤耘子,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布果漾,位于F島的核電站,受9級(jí)特大地震影響谷誓,放射性物質(zhì)發(fā)生泄漏跨晴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一片林、第九天 我趴在偏房一處隱蔽的房頂上張望端盆。 院中可真熱鬧,春花似錦费封、人聲如沸焕妙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)焚鹊。三九已至,卻和暖如春韧献,著一層夾襖步出監(jiān)牢的瞬間末患,已是汗流浹背研叫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留璧针,地道東北人嚷炉。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像探橱,于是被迫代替她去往敵國(guó)和親申屹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多隧膏,請(qǐng)查閱幫助信息) 1哗讥、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,114評(píng)論 1 19
  • Mac編譯安裝swfTools [TOC] 下載源碼 這里下載安裝的是swftools-0.9.2.tar.gz,...
    zhangxiong1994閱讀 387評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理胞枕,服務(wù)發(fā)現(xiàn)杆煞,斷路器,智...
    卡卡羅2017閱讀 134,715評(píng)論 18 139
  • 正式踏入25周歲已經(jīng)四個(gè)多月了腐泻,為什么對(duì)于25這個(gè)數(shù)字這樣的敏感索绪,大概像我一樣二十幾年都活的循規(guī)蹈矩...
    葉綦閱讀 279評(píng)論 0 0
  • 曾經(jīng)的一篇文瑞驱,給曾經(jīng)的那個(gè)人。分別總是悄無(wú)聲息窄坦,曾經(jīng)說(shuō)的話唤反,抵不過(guò)時(shí)間抵不過(guò)不聯(lián)系,抵不過(guò)我沒(méi)有想象的那么重要鸭津。原...
    蘇葉沏閱讀 358評(píng)論 0 1