Mac编译安装swfTools

下载源码

这里下载安装的是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

安装依赖项

# Linux/CentOS 安装 这里没有实际测试,需要自己去测试 这里只是一个记录
yum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel

主要通过brew安装一下四个包:lzlib、giflib、jpeg、freetype

Mac版本安装命令:

# 注意 lzlib 也许是不需要安装的,这里没有去测试
brew install lzlib
brew install giflib
brew install jpeg
brew freetype

./configure执行配置或者执行如下配置命令:

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

需要注意这里存在部分代码错误,需要修改解决后执行

一、char * 和 int比较导致的错误, 需要修为文件

错误信息:

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

1 插入文件头
#include <stdlib.h>
2 错误处理代码
(具体修改位置可以参考错误提示),原始代码是直接使用变量做比较,这里需要对变量调用atio函数后比较

二、存在一些变量没有定义的错误

错误信息:

文件swftools-0.9.2/lib/jpeg.c中存在部分变量没有定义,这里需要修改

修改后代码:

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

三、存在一些方法参数数量错误 以及 部分函数没有定义问题

报错信息:

解决方案:

修改文件swftools-0.9.2/src/gif2swf.c等内容:

1.1 全局搜索DGifOpenFileNameDGifCloseFile调用

1.2 在存在调用上述两个方法的地方,定义变量

c
int Error;

并且修改调用为:
c
DGifOpenFileName(sname, &Error)

注意:这里修改需要注意,如果上述两个方法在同一个方法中调用,只需定义一次变量即可

1.3 在当前文件中全局搜索PrintGifError();,将这行代码删除或注释掉。

make编译

make install安装

开发注意点

关于pdf2swf转码命令:

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的命令行执行转码,文件路径和生成的路径不能加双引号,也就是以为这文件源路径和目标路径不能有空格

Java代码调用执行文档转换代码:

注意:如果是在Java的命令行执行转码,文件路径和生成的路径不能加双引号,也就是以为这文件源路径和目标路径不能有空格

package cn;

import java.io.*;

/**
* 将pdf转化为swf文件
* 需要工具 swftools -> pdf2swf
*
* @author
*
*/
public class Pdf2swfUtil {
// pdf2swf 执行文件路径
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 {
//目标路径不存在则建立目标路径
File dest = new File(destPath);
if (!dest.exists()) dest.mkdirs(); //源文件不存在则返回
File source = new File(sourcePath);
if (!source.exists()) return 0; //调用pdf2swf命令进行转换
// 注意 这里的文档输入和文档输出路径不能存在空格, 并且这里的命令中,路径不能使用双引号包住
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(); // 启动单独的线程来清空process.getInputStream()的缓冲区 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(); // 启动单独的线程来清空process.getInputStream()的缓冲区
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/编写高质量代码--Web前端开发修炼之道.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 ");
}
}
}

Mac编译安装swfTools的更多相关文章

  1. linux(mac) 编译安装MySQL

    Reference: https://blog.csdn.net/Tzhennan/article/details/80565235 官方下载地址:  https://dev.mysql.com/do ...

  2. ubuntu下 编译安装swftools

    1.下载:http://www.swftools.org/download.html2.安装: tar -zvxf swftools-0.x.x.tar cd swftools-0.x.x ./con ...

  3. Mac Pro 编译安装 Redis 的 PHP 客户端 phpredis

    1.去官网下载 redis 扩展源码包 https://github.com/phpredis/phpredis 2.安装 redis 扩展 /usr/local/src/mac-sdk/source ...

  4. PTAM 编译安装 on MAC(mavericks)

    最近有需要研究PTAM,所以需要在我的MAC上编译安装,整个过程让人非常崩溃各种问题陷阱.现在整理一下编译过程.我已经成功在MAC上编译.那么接下来我会详细讲解整个过程: 注意: 部分链接可能需要FQ ...

  5. Mac Pro 编译安装 Redis-3.2.3

    Redis官方下载地址:http://redis.io/download Redis安装 cd /usr/local/src/redis-3.2.3 sudo make sudo make insta ...

  6. 记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程

    买 Mac Pro 的时候,系统为 OS X 10.11.5,编译 PHP-5.6.21 的时候,也遇到一些坑,安装过程记录如下: Mac Pro 编译安装 PHP 5.6.21 及 问题汇总 后来, ...

  7. Mac Pro 编译安装 PHP 5.6.21 及 问题汇总

    [系统环境] 操作系统:OS X 10.11.5 Xcode:7.3.1 [注意] 编译之前,需要安装 xcode.Homebrew 套件! Mac Pro 安装 Homebrew 软件包管理工具 1 ...

  8. Mac Pro 编译安装 Nginx 1.8.1

    #下载相关源码包,统一放到 /usr/local/src 目录下: http://nginx.org/download/nginx-1.8.1.tar.gz http://zlib.net/zlib- ...

  9. mac下Nginx+lua模块编译安装

    Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...

随机推荐

  1. Reset GitLab Root Password

    重置gitlab管理员密码 Log into your server with root privileges. Then start a Ruby on Rails console. Start t ...

  2. jsonp 返回以前必须要再转一次json

    public static void main(String[] args) {        String ajaxJsonStr = null;        AjaxJson ajaxJson ...

  3. Oracle存储过程_语法

    create or replace procedure procedure_name --存储过程名字 ( --进行输入/输出的量 量_name in out 量_类型 --e.g. username ...

  4. numpy深入理解剖析

    http://www.scipy-lectures.org/advanced/advanced_numpy/index.html

  5. pycharm something

    e1:使用的版本2016.3 发现无法执行py程序,执行菜单为灰色.选择py为2.7. e2:使用过jython可以运行,但是语法有问题str.formate无法执行

  6. [翻译] GiFHUD

    GiFHUD progress hud for displaying only animated gif images. no labels (for now) 状态指示器,仅仅用来显示gif图片,不 ...

  7. Asp.Net网站的的编译与发布原理

    如下所示创建一个简单的asp.Net Web应用程序                     在VS中生成解决方案之后,可以在项目的目录下看到以下的文件:                       ...

  8. ASP.NET MVC 5 开发环境配置

    Install-Package Ninject -Version 3.2.2 -ProjectName SportsStore.WebUIInstall-Package Ninject.Web.Com ...

  9. 一段滚动文字的js (jQuery)

    function startmarqueeOneSMS() { var t; var to; var ishover = false; var waitone = 3000; var speed = ...

  10. 【0】如何在电脑中使用多个python版本【python虚拟环境配置】

    问题: 该篇解决如何在同一个操作系统中可以便捷诶的使用多个python版本.有时候我们在开发的时候会同时需要python2 和python3环境,或者是需要不同的版本,都可以尽心如下配置. (1)在c ...