李志海  20101229  QQ:76855049

CSDN:资源下载地址:http://lizhihai_99.download.csdn.net/

http://download.csdn.net/source/2947794

一、目的

我的这篇文章侧重点是如何很好的应用FlashPaper,不是告诉大家FlashPaper是什么。

二、FlashPaper介绍(从百科里面摘的)

FlashPaper 是Macromedia推出的一款电子文档类工具,通过使用本程序,你可以将需要的文档通过简单的设置转换为SWF格式的Flash动画,原文档的排版样式和字体显示不会受到影响,这样做的好处是不论对方的平台和语言版本是什么,都可以自由的观看你所制作的电子文档动画,并可以进行自由的放大,缩小和打印,翻页等操作,对文档的传播非常有好处,而且由于Flash动画的普及性和强大的可调节性,可以让你制作出非常漂亮的专业电子文档!

三、所需软件

l  Windows 系列操作系统

l  FlashPaper2.2 绿色版就行。网上有,或者到我的csdn上下载

l  Office 2010 建议装最新版本的,我以前装的是2007感觉不是很好。

l  AdobeReader 最新版本

四、转化程序

转化程序是通过cmd调用的FlashPrinter.exe这个命令执行的。转化程序注意几点:

l  把要转化的文件放入队列,保证程序一个一个的执行转化。

l  转化完成后让程序延迟一会,再执行下一个

主要代码如下:

String tmpOutFile = outFile.getPath().concat(File.separator)

.concat(

inFile.getName()

.replaceAll("[.]{1}.*$", ".swf"));

fileInst = new File(tmpOutFile);

List<String> commandArray = new ArrayList<String>();

commandArray.add(defaultCommand);

commandArray.add(inFile.getPath());

commandArray.add("-o");

commandArray.add(tmpOutFile);

ProcessBuilder pbObj = new ProcessBuilder();

pbObj.command(commandArray);

Map<String, String> envMap = pbObj.environment();

envMap.clear();

envMap.putAll(System.getenv());

pbObj.directory(outFile);

pbObj.redirectErrorStream(true);

boolean b = false;

Process proObj = null;

try {

proObj = pbObj.start();

final InputStream ins = proObj.getInputStream();

final ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

Thread th = new Thread() {

public void run() {

ReadableByteChannel rbcObj = Channels

.newChannel(ins);

try {

while (rbcObj.read(byteBuffer) != -1) {

byteBuffer.flip();

logger.info(java.nio.charset.Charset

.defaultCharset()

.decode(byteBuffer));

byteBuffer.clear();

}

catch (IOException e) {

logger.error(e);

}

}

};

th.setDaemon(true);

th.start();

try {

proObj.waitFor();

b = true;

catch (InterruptedException e) {

logger.error(e);

}

// 休息

Thread.sleep(30 * 1000);

catch (Exception e) {

logger.error("执行出错了");

logger.error(e);

finally {

if (proObj != null) {

proObj.destroy();

}

ManagerThread.getInstance().doNext(b, resFileConvert);

}

注意:别人有写好的FlashPaper4Java可以参考一下。这个网上也有,或到我的csdn上下载。

五、进程实护

用FlashPaper做转化一定要注意进程实护问题。因为FlashPaper用的是打印原理。同一台机器,同一时间只能有一个进程在执行。其它的只能是等待。另外在打印的时候可能会出现“卡纸”问题,需要程序去实时监控。

我的进程实护程序是用c#写的,每隔一段时间去看进程运行时间是不是超过了你设定的时间,如果超过了,就杀掉。主要代码如下:

foreach (Process print in Process.GetProcessesByName("FlashPrinter"))

{

if (((TimeSpan)(DateTime.Now - print.StartTime)).TotalMinutes > 3)

{

print.Kill();

}

}

进程实护程序用c/s程序写。写完后把它加到启动项里,每次重启机就不用关了。

六、Flex加载FlashPaper

上面是说如何把文件转化为 swf的。下面我们来说如何把文件展现出来。我目前用的是方法一。

方法一:SWFLoader加载,加载完后改变它的大小。

如果直接用SWFLoader加载的话,加载出的界面很小,不会按父容器的大小去自动变化。所以要给它加一个监听器,加载完后再去改变它的大小。如下:

<mx:SWFLoader id="swfLoader" width="700" height="520" bottom="10" top="10" left="10" right="10"/>

Private function init():void{

swfLoader.addEventListener(Event.INIT, initHandle);

}

private function initHandle(e : Event) : void {

swfLoader.getChildAt(0).width=pWidth;

swfLoader.getChildAt(0).height=pHeight;

}

优点:打开多个浏览器都不会影响其正常显示。与方法二的区别

缺点:文件会有点变形。

方法一:SWFLoader加载,通过LocationConnction与FlashPaper进行通信,调用其内部方法,改变其大小。

优点:不能同时打开多个文件,因为LocationConnction通道已经被第一占用了。

缺点:文件不会变形。

七、破解FlashPaper的自带的商标

FlashPaper2.2/Interface文件夹下有DefaultViewer2.swf文件,把其替换成自己的皮肤就可以。

八、.NET程序(运行在IIS中)会遇到权限问题:

解决办法是,修改IIS的程序池的运行用户的权限。

1.把networkservice这个用户加到管理员组

2.把IIS的运行账户换成你的管理员账户。如下图:

注明:关于第五和第八条是我的一个网名叫“星”的朋友提供的解决思路,在这里非常感谢他。

现在我的应用程序很稳定,如果大家按照上面的思路去做会很快的应用起来。我在应用的过程中遇到了很多困难,写这篇文章就是为了让朋友们少走弯路。

FlashPaper 使用经验之谈的更多相关文章

  1. 【经验之谈】Git使用之TortoiseGit配置VS详解

    前言 上一篇<[经验之谈]Git使用之Windows环境下配置>: 安装 配置和使用 后记 关于vs中使用git网上的教程大家也可以找到,我当时配置的时候也是按照网上找的教程一步一步来的, ...

  2. 【经验之谈】Git使用之Windows环境下配置

    前言 安装 配置 关于git使用的几个问题 后记 关于代码托管,以前用过vss和svn,看博客或论坛的时候,经常有人提到github,有很多著名的开源软件都托管在github,想来肯定不错(莫笑),当 ...

  3. 【经验之谈】Windows环境下配置WordPress

    前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...

  4. 利用FlashPaper在web页面中显示PDF文件(兼容各浏览器)

    应项目需求要把PDF内嵌到网页中显示,其中有了很多办法,比如用<embed/>元素放入PDF文件,但是效果不理想,浏览器兼容不理想,在ie9/8(其他版本没有测试)显示会提示下载pdf文件 ...

  5. 定制个性化的FlashPaper生成的文件

    1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵 ...

  6. 基于FlashPaper的文档播放器

    本文主要讨论.描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制,也就是说只允许浏览操作.对下载.打印进行控制. FlashPaper FlashPap ...

  7. 利用FlashPaper实现类似百度文库功能

    最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求. 首先讲下思路: 1>安装FlashPaper: 2>利用java代码将 ...

  8. 不同版本PHP之间cURL的区别(-经验之谈)

    之前在做一个采集的工具,实现采集回来的文章,图片保存起来.文章内容是保存在数据库,图片是先需要上传到图片服务器,再返回图片地址,替换掉文章的图片地址. 问题来了:都能成功采集都东西,但是,本地测试是正 ...

  9. FlashPaper组件——api

    属性摘要 属性 说明 documentPath:String FlashPaper文件的路径. borderThickness:Number 边框宽度. borderColor:String 边框颜色 ...

随机推荐

  1. Linux/Unix shell 监控Oracle实例(monitor instance)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...

  2. 配置java环境时,java的path地址放在其他地址的前面还是后面?

      PATH环境变量里是按顺序查找的,如果电脑里只有一个jdk,放哪都一样,有多个放前面的会优先.   一般是放在最前面吧,以免其他在path中的程序需要用到Java环境而由于在JAVA_PATH之前 ...

  3. window 7 下一台cp 两个mysql 配置主从

    环境 : 个人 pc windows7 一台 ; 使用 : 官方下载: mysql-noinstall-5.5.11-win32.zip 1. 解压 成2个 (文件夹) mysql_master (主 ...

  4. Android之ContentProvider总结

    1.适用场景 1) ContentProvider为存储和读取数据提供了统一的接口 2) 使用ContentProvider,应用程序可以实现数据共享 3) android内置的许多数据都是使用Con ...

  5. 理解Mysql的索引与优化

    转自:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库 ...

  6. mybatis Java API

    既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyB ...

  7. CKEditor和IMCE构建drupal编辑器

    1. 安装并启用CKEditor和IMCE模块. 2. 配置CKEditor: 3. 配置用户的权限即可.最终效果图:

  8. JDK - Tomcat - JSP - Servlet 配置运行全攻略(转)

    http://www.cnblogs.com/myqiao/archive/2005/08/29/225497.html 花了将近两个月的时间,从 JDK 开始一步一步摸索,历经千辛万苦,终于让第一个 ...

  9. leetcode:Reverse Integer(一个整数反序输出)

    Question:Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 ...

  10. 初识HTTP 1.1与HTTP 1.0

    HTTP 1.1与HTTP 1.0的比较 一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个 ...