我找到了解决问题的方法,提出请求后,会将其发布在此处以帮助他人。抱歉,如果我错过任何细节,距离我从事此解决方案已有一段时间了。
首先需要在服务器上安装 **Openoffice.org** 。我要求托管服务提供商在我的VPS上安装开放式办公室RPM。这可以直接通过WHM完成。
现在,服务器具有处理MS Office文件的功能,您可以通过通过PHP执行命令行指令来转换文件。为了解决这个问题,我找到了 :https ://github.com/mirkonasato/pyodconverter
我在服务器上创建了一个目录,并将PyODConverter python文件放在其中。我还在网络根上方创建了一个纯文本文件(我将其命名为“ adocpdf”),其中包含以下命令行说明:
directory=$1
filename=$2
extension=$3
SERVICE='soffice'
if [ "`ps ax|grep -v grep|grep -c $SERVICE`" -lt 1 ]; then
unset DISPLAY
/usr/bin/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
sleep 5s
fi
python /home/website/python/DocumentConverter.py /home/website/$directory$filename$extension /home/website/$directory$filename.pdf
这将检查openoffice.org库是否正在运行,然后调用PyODConverter脚本来处理文件并将其输出为PDF。从PHP文件执行脚本时,将提供前三行的3个变量。延迟(“ sleep 5s”)用于确保openoffice.org有足够的时间来启动(如果需要)。我已经使用了几个月,而5s的间隔似乎给了足够的呼吸空间。
该脚本将在与原始目录相同的目录中创建文档的PDF版本。
最后,从PHP内部启动Word / Excel文件的转换(我在一个函数中检查它是否正在处理的文件是word / excel文档)。
//use openoffice.org
$output = array();
$return_var = 0;
exec("/opt/adocpdf {$directory} {$filename} {$extension}", $output, $return_var);
将Word / Excel文件上载到服务器后,将调用此PHP函数。exec()调用中的3个变量直接与上面的纯文本脚本开头的3个变量相关。请注意,如果要转换的文件位于Web根目录之内,则$ directory变量不需要前导斜杠。
好,就是这样!希望这对某人有用,并且可以避免他们遇到的困难和学习困难。