## 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但是無法下載,那么需要考慮是否是權限問題導致的