+ -
当前位置:首页 → 问答吧 → 使用exec调用外部程序出错

使用exec调用外部程序出错

时间:2011-11-04

来源:互联网

我今天遇到一个很诡异的问题,不知道如何解决了。

我要做一个在线PDF阅读功能,用到了swftools中的pdf2swf.exe,由于pdf文件比较大,我将pdf文件每30页生成一个swf文件,然后通过flash阅读器来查看,将pdf转为swf的命令行代码如下:

HTML code
D:\SWFTools\pdf2swf.exe d:\swftools\xxx.pdf -p 31-60 -o d:\swftools\xxx_31-60.swf -f -T 9 -t -s poly2bitmap


其功能是将 xxx.pdf的第31-60页生成 xxx_31-60.swf。

绝大部分情况都是正常的,今天遇到一个文件转换出错了,是转换一个文件的第31到60页,在转换过程中会弹出窗口
HTML code
---------------------------
pdf2swf.exe - 应用程序错误
---------------------------
"0x00633616" 指令引用的 "0x025db000" 内存。该内存不能为 "read"。


要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定   取消   
---------------------------


点击确定后,php在得到的结果如下:

HTML code
NOTICE  processing PDF page 31 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 32 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 33 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 34 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 35 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 36 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 37 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 38 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 39 (1303x793:0:0) (move:0:0)
NOTICE  processing PDF page 40 (1303x793:0:0) (move:0:0)



中途出错了,而且每次中断的位置不一定。

然而我直接在命令行(cmd)中运行却一切正常。

更诡异的事情还在后面,我又尝试改变一下转换页的范围,我发现在php中转换 31-61页 或 31-59页居然通过了,唯独是 31-60页会出错,我当场晕死。。。

有哪位朋友知道这是怎么回事,如何解决吗?

作者: griefforyou   发布时间: 2011-11-04

又是这个问题。
windows中软件时不时就这个错误。悲哀啊。

作者: ohmygirl   发布时间: 2011-11-04

关键是用php调用的时候,而且是特定的文件,特定的参数才报错

作者: griefforyou   发布时间: 2011-11-04

可能跟调用参数有关吧。

非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。

作者: binarie   发布时间: 2011-11-04

引用 3 楼 binarie 的回复:

可能跟调用参数有关吧。

非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。


段错误跟是否linux没有关系吧。有内存访问的地方就可能有段错误。

在命令行中执行转换31-60页也会出错么?

作者: ohmygirl   发布时间: 2011-11-04

说法不一样嘛。windows里面习惯叫非法操作。

作者: binarie   发布时间: 2011-11-04

相关阅读 更多