本人代码更新在了github上面,名字是:qingchunyibeifangzongle
- https://github.com/qingchunyibeifangzongle/word_to_pdf
参考文章
1.mac 安装java
java --version 查看java版本
java 11.0.1 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
2. 接下来安装 openoffice
1).brew install homebrew/cask/openoffice
2).启动命令(注意看下端口,防止跟你已经存在的端口冲突啊)
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
3).查看进程
ps aux | grep soffice
3.安装 javaconverter(2.2.2版本,之前测试的这个可以用)
1).下载
wget https://sourceforge.net/projects/jodconverter/files/latest/download
2).解压
unzip jodconverter-2.2.2.zip
3).使用
**注意 jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar 必须使用绝对路径**
java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar {doc文档地址} {pdf文档地址}
4.PHP代码中操作命令行
$doc = '/Users/xxx/Desktop/开放平台额度扩展需求申请函.docx';
$pdf = '/Users/xxx/Desktop/开放平台额度扩展需求申请函4.pdf';
$size = filesize($doc);
$returnSize = trans_byte($size);
echo $returnSize; //文件大小
$set_charset = 'export LANG=en_US.UTF-8;';
$command = "java -jar ~/Downloads/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar {$doc} {$pdf}";
$t1 = microtime(true);
//exec 参数说明
// command 执行命令行
// output 执行的结果
// status 执行的状态
exec($set_charset . $command, $output, $return_var);
var_dump($set_charset . $command);
var_dump($output);
var_dump($return_var);
$t2 = microtime(true);
echo '耗时'.round($t2-$t1,3).'秒<br>'; //花了多少秒
echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />'; //内存
function trans_byte($byte)
{
$KB = 1024;
$MB = 1024 * $KB;
$GB = 1024 * $MB;
$TB = 1024 * $GB;
if ($byte < $KB) {
return $byte . "B";
} elseif ($byte < $MB) {
return round($byte / $KB, 2) . "KB";
} elseif ($byte < $GB) {
return round($byte / $MB, 2) . "MB";
} elseif ($byte < $TB) {
return round($byte / $GB, 2) . "GB";
} else {
return round($byte / $TB, 2) . "TB";
}
}