我今天遇到一个很诡异的问题,不知道如何解决了。我要做一个在线PDF阅读功能,用到了swftools中的pdf2swf.exe,由于pdf文件比较大,我将pdf文件每30页生成一个swf文件,然后通过flash阅读器来查看,将pdf转为swf的命令行代码如下: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页,在转换过程中会弹出窗口
---------------------------
pdf2swf.exe - 应用程序错误
---------------------------
"0x00633616" 指令引用的 "0x025db000" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定   取消   
---------------------------点击确定后,php在得到的结果如下: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页会出错,我当场晕死有哪位朋友知道这是怎么回事,如何解决吗?

解决方案 »

  1.   

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

  2.   

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

  3.   

    可能跟调用参数有关吧。非法操作跟linux的段错误意思差不多,都是访问了不该访问的内存地址。
      

  4.   


    段错误跟是否linux没有关系吧。有内存访问的地方就可能有段错误。在命令行中执行转换31-60页也会出错么?
      

  5.   

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

  6.   

    哎,还没用过 swftools 
      

  7.   

    "0x00633616" 指令引用的 "0x025db000" 内存。该内存不能为 "read"。最怕看到这个了!有时候重装系统都解决不了
      

  8.   

    我也碰到了同样的问题,是因为你有一页有很复杂的图,
    和参数-s poly2bitmap有关系这个是将一般的图转成位图,文字不转
    换成-s bitmap就没问题了,但是文字看不太清楚了