目的:office文件转换为PDF或SWF,最终可使用Flexpaper调用adobe flash player进行浏览

放弃两个文件转换工具:

1.FlashPaper,转换出的文件由于自带工具栏,无法控制打印等操作;

程序中进行命令行调用时,依赖MSOffice及adobe reader,对于环境依赖比较大

2.print2flash,代码中调用必须使用server版本(5000¥),未有破解

最终方案:

OpenOffice+JodConverter+SWFtools(office文件→PDF→SWF)

环境配置要求:

jre 1.4以上(JodConverter依赖)

office文件→PDF

在java中可以直接调用JodConverter类库执行

delphi中可调用JodConverter的可执行文件jar+命令行参数

命令行实例:

java -jar "D:\jodconverter-2.2.2\lib\jodconverter-cli-2.2.2.jar" "D:\业务部\1.doc" "D:\业务部\1.pdf"

PDF→SWF

调用swftools中的pdf2swf.exe+命令行参数(包括中文字体包位置,中文字体包位置需自行设置)

具体见:http://blog.csdn.net/fh13760184/article/details/4100421

命令行实例

D:\SWFTools\pdf2swf.exe  -o "D:\业务部\1.swf" -t "D:\业务部\1.pdf" -s languagedir="D:\xpdf\chinese-simplified"

delphi中的关键代码,思路是每条转换任务作为一个线程,进程中创建一个进程,进程结束就表示任务结束

procedure StopProcess(ProcessID: DWORD);
var
  Handle: THandle;
begin
  Handle := OpenProcess(PROCESS_TERMINATE or PROCESS_VM_READ, False, ProcessID);
  if Handle <> 0 then
  try
    TerminateProcess(Handle, 0);
    WaitForSingleObject(Handle, INFINITE);
  finally
    CloseHandle(Handle);
  end;
end;

procedure TFileConvertThread.Execute;
var

pInfo: TProcessInformation;
  StartInfo: TStartupInfo;
  Path: array[0..MAX_PATH - 1] of Char;
  cmdLines: string;
  fileExName: string;
  dw: HWND;

begin
  inherited;
  FillChar(StartInfo, sizeof(StartInfo), 0);
  StartInfo.cb := sizeof(StartInfo);

StartInfo.wShowWindow := SW_HIDE; //隐藏命令行窗口
  StartInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartInfo.hStdError := 0;
  StartInfo.hStdInput := 0;
  StartInfo.hStdOutput := 0;

cmdLines :='java -jar "D:\jodconverter-2.2.2\lib\jodconverter-cli-2.2.2.jar" "D:\业务部\1.doc" "D:\业务部\1.pdf"';
  //cmdLines :='D:\SWFTools\pdf2swf.exe  -o "D:\业务部\1.swf" -t "D:\业务部\1.pdf" -s languagedir="D:\xpdf\chinese-simplified"';
  //打开一个进程
  CreateProcess(nil, PAnsiChar(cmdLines), nil, nil, False, 0, nil, nil,
    StartInfo, pInfo);

FSysPid := pInfo.dwProcessId; //获取系统进程pid
  dw := WaitForSingleObject(pInfo.hProcess, 120000); //120000表示超时时间为2分钟,等待进程执行的信号状态

case dw of
    WAIT_OBJECT_0: // 进程正常执行完毕
      begin
        //  '转换成功!'
      end;
    WAIT_TIMEOUT: // 进程执行超时
      begin
        //'转换超时!'; 此处可kill pid
        StopProcess(FSysPid);
      end;
    WAIT_FAILED: // 进程执行失败
      begin
       // '转换失败!';
      end
  end;
end;

Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换的更多相关文章

  1. openOffice转换的时候乱码在linux下使用openOffice的时候发现在转换后出现了乱码

    openOffice转换的时候乱码 在linux下使用openOffice的时候发现在转换后出现了乱码,最后上网查了一下,按照网上的说法去试了试,最后也没有解决,也可能是我这边的linux的权限问题, ...

  2. PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行

    首先证明我是加了那些鬼东西以后可以成功运行的. 然后来叙述一下我的过程. 这是一个.ui文件生成的.py文件.(把主要的内容省去了,但是没有影响结构) # -*- coding: utf-8 -*- ...

  3. 用命令让vbox的虚拟硬盘文件转换成vmware的vmdk

    VirtualBox的生成备份功能只是个系统还原点 这个生成备份功能备份速度非常快,其实它并不是备份,而是相当于xp系统中的建立系统还原点.但是要注意的是如果你的虚拟硬盘文件(***.vdi)在别的V ...

  4. Centos上的安装openoffice+unoconv+swftools (转)

    ############################## #    swftools的安装     # ############################## 1.安装所需的库和组件 yum ...

  5. PHP Windows系统下调用OpenOffice

    项目需要把用户上传的word文档转换为pdf文件,方便用户浏览.经过谷歌百度找到PHP可以使用COM组件调用微软的openoffice来实现文档转换 1,安装OpenOffice 安装OpenOffi ...

  6. Delphi中ExtractFilePath、ParamStr以及更多文件/目录操作涉及的函数。附加对应的例子

    先介绍ExtractFilePath和ParamStr ParamStr 该函数的原型是:function paramstr(i: Integer): String; 对于任何的application ...

  7. Delphi下使用Oracle Access控件组下TOraSession控件链接

    Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用  orsn1.Options.Direct:=true;  orsn1.Server:=IP:Port: ...

  8. Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤

    资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...

  9. DELPHI下的SOCK编程(转)

    DELPHI下的SOCK编程      本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认为 ...

随机推荐

  1. 【Tech】Cassandra安装和启动

    1.安装 jre,配置系统环境变量: 2.安装python,配置环境变量: 3.下载cassandra,http://cassandra.apache.org/download/: 4.解压,这里我没 ...

  2. emacs 快捷键笔记

    C-d C-aM-aC-eM-e===复制黏贴M-d    kill-wordM-del     backward-kill-wordM-k     kill-sentenceC-x del back ...

  3. NDK(6)eclipse下断点调试ndk代码

    Using the NDK Plugin 1. First set the path to SDK and NDK: Eclipse -> Window -> Preferences -& ...

  4. 《OD学hadoop》第四周0716

    7.16 一.回顾 二.HDFS Federation(联盟) Hadoop 2.2.0发布新特性 很多的大公司都在使用:BAT HDFS Federation + HDFS HA架构 互相隔开,但是 ...

  5. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  6. [转]深入hibernate的三种状态

    学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别 ...

  7. Android之项目推荐使用的第三方库

    1. 使用上拉更多,下拉刷新:https://github.com/JosephPeng/XListView-Android 这个是github上面更为火爆的:https://github.com/c ...

  8. Qt之HTTP上传/下载

    简述 在前面章节中我们讲述了关于Qt显示网络图片的内容,比较简单,因为图片一般都比较小,下载到本地速度比较快,所以基本不需要什么特殊处理,本节我们主要针对HTTP实现上传/下载进行详细的讲解与分享,包 ...

  9. Qt之重启应用程序

    简介 今天分享的内容有些意思-如何重启一个应用程序.其实,有时候这是一个很重要的功能点,而且很人性化.易用性很好. 例如:切换用户.当某个用户登录成功之后,需要切换到其它账号,那么这时,你就知道它的重 ...

  10. Struts2+Uploadify文件上传使用详解

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例是php版本的,本文将详细介绍Uploadify在java中的使用,您也可以点击下面的链接进行演示或下 ...