零 准备工作
下载 JavaBridge.jar 、 jdk-7u71-linux-x64.tar.gz 、
mpxj-4.7.3.zip
一 jdk安装
windows用户先安装JRE
具体步骤不详述了,请自行搜索
linux用户下载jdk
这里使用jdk-7u71-linux-x64.tar.gz
1、将jdk-7u71-linux-x64.tar.gz上传到服务器
2、mkdir /usr/java
3、mv jdk-7u71-linux-x64.gz /usr/java/jdk.gz
4、cd /usr/java
5、tar xzvf jdk.gz
6、mv jdk1.7.0_71/ jdk
二 修改环境变量
在
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
这行之后添加
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVAHOME/lib/tools.jar保存。
. /etc/profile 或者 source /etc/profile让设置立即生效
三 文件部署
将mpxj-4.7.3.zip包里的三个文件
mpxj.jar
lib/rtfparserkit-1.1.0.jar
lib/poi-3.11-20141221.jar放到class_path里
这里我的class_path是
/usr/java/jdk/jre/lib/ext
将JavaBridge.jar放到你的工程bin目录下,执行以下命令让其后台运行
java -jar /somedir/bin/JavaBridge.jar HTTP_LOCAL:8081 >some.log 2>&1 &
四 安装完成
修改php.ini里的allow_url_include为ON(有潜在危险)
require_once ('
http://localhost:8081/JavaBridge/java/Java.inc
');
就可以调用mpxj里的方法
以下是测试代码
public function parseMSPJ($fileName) {
$file_path = $this->session->file_path;
require_once ('http://localhost:8081/JavaBridge/java/Java.inc');
$data = array();
if(empty($file_path)){
return $data;
}
$mppRead = new Java('net.sf.mpxj.mpp.MPPReader');
$Filecontent = $mppRead->read($file_path);
$Alltasks = $Filecontent->getAllTasks();
$Tasks_size = java_values($Alltasks->size());
// ID|任务名|开始时间|结束时间|完成百分比|资源|工期
for($i = 1; $i < $Tasks_size; $i ++) {
$res = $this->getResource($Alltasks[$i]);
if (empty($res))
continue;
foreach ( $res as $val ) {
$separator = '|';
$string =$Alltasks[$i]->getUniqueID().$separator.$Alltasks[$i]->getName().$separator.$Alltasks[$i]->getStart().$separator.$Alltasks[$i]->getFinish().$separator.$Alltasks[$i]->getPercentageComplete().$separator.$val.$separator.$Alltasks[$i]->getDuration();
$data[] = explode('|', $string);
}
}
return $data;
}
function getResource($task) {
$resource = $task->getResourceAssignments();
$size = java_values($resource->size());
$buf = '';
for($i = 0; $i < $size; $i ++) {
$buf[] = $resource[$i]->getResource()->getName();
}
return $buf;
}