## pdf转换需要Java环境支持以及后续的合同电签套打等都需要
相关压缩文件下载:
[网盘下载](https://pan.baidu.com/s/1JPakavXHoY5u7N1dSAQKjQ ),提取码:jsls
笔者获取(2319048747@qq.com,备注jdk或者tomacat)
1、安装搭建Java环境
```
一、下载tomcat及jdk
该文件包可自行下载(以依赖文件中文件包解说)
二、将文件包导入服务器
一般文件放在 /usr/local 目录下,也可自行选择
三、解压两个文件(文件放在 /usr/local 目录下)
1、jdk安装
cd /usr/local
tar -zxvf jdk-8u181-linux-x64.tar.gz
// 将在该目录下生成jdk1.8.0_181目录
// 配置jdk环境(到根目录)
vim .bashrc
// 在最后加入如下代码
*****************************************************
* export JAVA_HOME=/usr/local/jdk1.8.0_181/ *
* export JRE_HOME=$JAVA_HOME/jre *
* export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH *
* export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:. *
*****************************************************
// 退出保存该文件
// 使文件生效
source .bashrc
// 查看jdk是否安装成功
java -version
// 出现如下字表示安装成功
*************************************************************************
* java version "1.8.0_181" *
* Java(TM) SE Runtime Environment (build 1.8.0_181-b13) *
* Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode) *
*************************************************************************
2、tomcat安装
cd /usr/local
tar -zxvf apache-tomcat-8.5.33.tar.gz
// 将在该目录下生成apache-tomcat-8.5.33目录
// 将eqb的war包放入 /usr/local/apache-tomcat-8.5.33/webapps
以上工作 然后在启用tomcat就可以工作了
但是实际上tomcat服务默认是以tomcat用户组运行的,不符合php项目以www用户组运行的标准
在tomcat生成的文件,在我们项目中文件是无权限访问的
四、用www用户组权限运行tomcat
cd /usr/local/apache-tomcat-8/bin
tar -zvxf commons-daemon-native.tar.gz
cd commons-daemon-1.1.0-native-src/unix/
./configure
make
cp jsvc ../../
cd ..
vim daemon.sh
// 将TOMCAT_USER 改为 www,并指定java jdk安装环境
*****************************************************
* test ".$TOMCAT_USER" = . && TOMCAT_USER=www *
* # Set JAVA_HOME to working JDK or JRE *
* JAVA_HOME=/usr/local/jdk1.8.0_181 *
*****************************************************
保存后退出
五、启动tomcat
必须使用 daemon.sh 命令启动
./daemon.sh start //启动tomcat服务
六、其他辅助设置
为了方便我们将Tomcat设置为服务(在init.d下创建软连接):
ln -s /usr/local/apache-tomcat-8.5.33/bin/daemon.sh /etc/init.d/tomcat8
可以使用service Tomcat9 start进行启动了
设置Tomcat为开机自启动服务,需先将tomcat设置为服务:update-rc.d tomcat8 defaults
移除Tomcat开机自启动,执行以下命令:update-rc.d Tomcat9 remove
```
2、安装openoffice
```
文件下载依赖包【依赖文件:Apache_OpenOffice_4.1.6_Linux_x86-64_install-deb_zh-CN.tar.gz】
2.1 上传到服务器并解压
tar -zxvf /usr/local/Apache_OpenOffice_4.1.6_Linux_x86-64_install-deb_zh-CN.tar.gz
2.2 解压后的文件目录为zh-CN,进行修改(重命名)
mv ./zh-CN/ ./openOffice
2.3 配置openoffice
cd openOffice/DEBS/
dpkg -i *.deb
cd desktop-integration/
dpkg -i openoffice4.1-debian-menus_4.1.6-9790_all.deb
// 文件默认安装在/opt/openoffice4下
上述为Ubuntu环境,如果是centos环境采用如下命令(centos不支持deb文件安装):
安装转换工具:yum install alien
配置openoffice
cd openOffice/DEBS/
// 转换成rpm文件
alien -r *.deb generated
// 强制安装
rpm -ivh --nodeps --force *.rpm
cd desktop-integration/
// 同理转换
alien -r openoffice4.1-debian-menus_4.1.6-9790_all.deb genrated
// 安装
rpm -ivh --nodeps --force openoffice-debian-menus-4.1.6-9791.noarch.rpm
```
3、安装jodConverter
```
3.1 进入/opt目录,并下载文件压缩包
cd /opt
wget https://downloads.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip
3.2 解压文件
unzip /opt/jodconverter-2.2.2.zip
// 说明:其中jodconverter-2.2.2.zip可能下载下来不完整,笔者提供的压缩包中含有该文件!
```
4、配置字体
```
4.1 进入jdk字体目录
cd /usr/local/jdk1.8.0_201(你安装的jdk目录)/jre/lib/fonts/
4.2 建立fallback目录
mkdir fallback
4.3 将中文字体msyh.ttf、msyhbd.ttf、simhei.ttf、simsun.ttc放到fallback目录下
依赖文件包中拷贝【依赖文件/字体】
4.4 将字体放到linux字体文件夹
cp /usr/local/jdk1.8.0_201/jre/lib/fonts/fallback/* /usr/share/fonts/
cp /usr/local/jdk1.8.0_201/jre/lib/fonts/* /usr/share/fonts/
4.5 刷新字体
fa-cache
// 如果报错,根据提示安装即可
apt-get install fontconfig
// 说明:字体也在笔者提供的压缩包中
```
5、启动openOffice(基本启动失败)
```
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
// 如果启动失败
尝试安装:yum groupinstall "X Window System"
失败则安装:apt-get install libxt6
```
6、本地环境测试
```
java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/test.docx /tmp/test.pdf
```
7、PHP测试使用
```
#需要修改php.ini文件,因为使用了disable_function exec()
#需要java的完全路径
$command = "sudo /usr/local/jdk1.8.0_201/bin/java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/test.docx /tmp/test.pdf";
// $return_var返回值0或1,如果返回0则执行成功,返回1则执行失败
exec($command, $output, $return_var);
if ($return_var != 0) {
throw new \Exception("生成PDF失败");
}
// 注意:一定是绝对路径,相对路径将会失败,文件名一定不能含有中文,否则也将失败
```
8、如果php执行未能生成PDF或生成了PDF但是无法下载,那么需要考虑是否是权限问题导致的