李志海  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. JS面向对象组件(三)--面向对象中的常用属性和方法

    图片的由来看下面: 1.hasOwnProperty:看是不是对象自身下面的属性 var arr = []; arr.num = ; Array.prototype.num2 = ; //所有的数组对 ...

  2. 转:移动开发中一些bug及解决方案

    网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...

  3. 删除binlog的方法

    不知道你有没有为mysql的binlog占用大量磁盘感到无奈,my.cnf里binlog的size可以设置多大做分割,但没有看到删除的配置,在mysql里show了一下variables, mysql ...

  4. mysql的text类型长度问题

    在我的概念中,mysql中的text字段应该是没有长度限制的,但是今天事实告诉我,text类型的长度是有限制的.其中mysql的text类型有64K长度限制的,MEDIUMTEXT中型是2G,LONG ...

  5. myeclipse10添加jQuery自动提示

    首先先要在装上spket插件,这个网上有好多教程,我就不详细说了,主要说一下后面的设置,因为我发现我按照网上的装完也设置完没办法使用自动提示功能,以下是我根据前辈的经验然后自己摸索出来的: 选中所建的 ...

  6. [转] C# 键盘中的按键对应的KeyValue

    原文C#KeyValue对应键盘 首先先看一下什么情况下需要对按键进行识别: KeyPress事件响应函数中,有KeyPressEventArgs, 对应于e.KeyChar; KeyDown事件响应 ...

  7. 防范 DDoS 攻击的 15 个方法

    为了对抗 DDoS(分布式拒绝服务)攻击,你需要对攻击时发生了什么有一个清楚的理解. 简单来讲,DDoS 攻击可以通过利用服务器上的漏洞,或者消耗服务器上的资源(例如 内存.硬盘等等)来达到目的.DD ...

  8. 处理 JSON null 和空数组及对象

    描述了对 JSON 数据中使用的 null 和空数组及对象的处理. JSON 数据具有 null 和空数组及对象的概念.此部分说明其中每个概念如何映射到 null 和未设置的数据对象概念. Null ...

  9. yii中设置提示成功信息,错误提示信息,警告信息

    方法一: <?phpYii::app()->user->setFlash(‘success’,”Data saved!”); 设置键值名为success的临时信息.在getFlash ...

  10. 用DzzOffice管理阿里云OSS

    在DzzOffice分两种方式管理阿里云OSS 1.把阿里云oss作为多人或企业的共享网盘使用. 2.接入个人的阿里云oss管理,可同时管理多个bucket,多个bucket之间可以互传文件. 下面先 ...