Delphi下使用OpenOffice+JodConverter+SWFtools进行文件转换
目的: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进行文件转换的更多相关文章
- openOffice转换的时候乱码在linux下使用openOffice的时候发现在转换后出现了乱码
openOffice转换的时候乱码 在linux下使用openOffice的时候发现在转换后出现了乱码,最后上网查了一下,按照网上的说法去试了试,最后也没有解决,也可能是我这边的linux的权限问题, ...
- PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行
首先证明我是加了那些鬼东西以后可以成功运行的. 然后来叙述一下我的过程. 这是一个.ui文件生成的.py文件.(把主要的内容省去了,但是没有影响结构) # -*- coding: utf-8 -*- ...
- 用命令让vbox的虚拟硬盘文件转换成vmware的vmdk
VirtualBox的生成备份功能只是个系统还原点 这个生成备份功能备份速度非常快,其实它并不是备份,而是相当于xp系统中的建立系统还原点.但是要注意的是如果你的虚拟硬盘文件(***.vdi)在别的V ...
- Centos上的安装openoffice+unoconv+swftools (转)
############################## # swftools的安装 # ############################## 1.安装所需的库和组件 yum ...
- PHP Windows系统下调用OpenOffice
项目需要把用户上传的word文档转换为pdf文件,方便用户浏览.经过谷歌百度找到PHP可以使用COM组件调用微软的openoffice来实现文档转换 1,安装OpenOffice 安装OpenOffi ...
- Delphi中ExtractFilePath、ParamStr以及更多文件/目录操作涉及的函数。附加对应的例子
先介绍ExtractFilePath和ParamStr ParamStr 该函数的原型是:function paramstr(i: Integer): String; 对于任何的application ...
- Delphi下使用Oracle Access控件组下TOraSession控件链接
Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用 orsn1.Options.Direct:=true; orsn1.Server:=IP:Port: ...
- Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...
- DELPHI下的SOCK编程(转)
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认为 ...
随机推荐
- ILog JRules 标识符 X 未定义
在定义枚举值时,属性“转译”(“translation”),定义字符串时需要双引号,相当于value值. 其属性值如果只有字符串,而没有双引号,在编译或者执行时就会报“标识符X未定义”的错误信息.
- Win7 系统引导盘(C盘)空间越来越小怎么办?
Win7的系统引导盘用着用着会越来越小.怎么办呢?我以前在网上查过资料,说是找个工具加大C盘.我加了,从原来的20G加到现在的35G.用了一段时间后,空间又只剩几百M了.难道又要加?? 后来,在网上找 ...
- linux系统的 suid/guid简单介绍 linux suid guid
我们在前面曾经提到过s u i d和g u i d.这种权限位近年来成为一个棘手的问题.很多系统供应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风险.那么人们为何如此大 ...
- 如何创建PostgreSQL数据库
PostgreSQL提供两种方式创建一个新的数据库:第一种是使用CREATE DATABASE的SQL命令.第二种使用createdb的一个命令行可执行文件. 第一种:使用CREATE DATABAS ...
- MapReduce读取hdfs上文件,建立词频的倒排索引到Hbase
Hdfs上的数据文件为T0,T1,T2(无后缀): T0: What has come into being in him was life, and the life was the light o ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
- 《OD大数据实战》MongoDB环境搭建
一.MongonDB环境搭建 1. 下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 2. 解压 tar -zxvf ...
- UVa 11988 (数组模拟链表) Broken Keyboard (a.k.a. Beiju Text)
题意: 模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键. 问最终屏幕上显示的结果是什么字符串. 分析: 如果在数组用大量的移动字符必然很耗时. ...
- POJ 1456 (贪心+并查集) Supermarket
有n件商品,每件商品有它的利润和售出的最后期限,问能够得到的最大利润是多少 这道题和 HDU 1789 Doing Homework again 几乎一模一样,只不过这个是求最的扣分,本题是求最大利润 ...
- HDU 1051 Wooden Sticks【LIS】
题意:给出n个木头的重量wi,长度li,如果满足w[i+1]>=w[i]且l[i+1]>=l[i],则不用耗费另外的加工时间,问至少需要多长时间加工完这些木头. 第一次做这一题目也没有做出 ...