最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP實(shí)現(xiàn)word轉(zhuǎn)pdf的兩種方式(有用!)

 更新時(shí)間:2022年09月22日 10:06:39   作者:焚膏油以繼晷,恒兀兀以窮年  
最近遇到一個(gè)需求,將word文件轉(zhuǎn)換成pdf,輾轉(zhuǎn)了一上午終于搞定了,下面這篇文章主要給大家介紹了關(guān)于PHP實(shí)現(xiàn)word轉(zhuǎn)pdf的兩種方式,需要的朋友可以參考下

方法一、使用phpword和tcpdf

1. 使用composer 安裝 phpword和tcpdf

	composer require phpoffice/phpword
	composer require tecnickcom/tcpdf

2. 示例代碼 (試?yán)蚣苁莑aravel,以下文件默認(rèn)是放置在public中)

//			你的初始文件地址
			$word = 'test.docx';
           \PhpOffice\PhpWord\Settings::setPdfRendererPath(base_path('vendor/tecnickcom/tcpdf'));
           //設(shè)置轉(zhuǎn)換pdf的類庫名(DomPDF、MPDF、TCPDF)需要下載對(duì)應(yīng)的類庫
           \PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
 //				加載word文件
           $wordPdf = \PhpOffice\PhpWord\IOFactory::load($word);
//			讀取生成的docx文件 并且指明要生成的文件格式
           $pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
//			設(shè)置文字字體,文字大小
           $pdfWriter->SetFont('wryh','',20,'',false);
//			生成pdf文件 的保存地址
           $temp_path = 'test.pdf'
//			文件保存        
           $pdfWriter->save($temp_path);
            return $temp_path;

3. 中文亂碼 - 設(shè)置字體

亂碼一般是因?yàn)樽煮w問題

1、從網(wǎng)上下載一個(gè)ttf文
2、找到 /vendor/tecnickcom/tcpdf/tools 的位置,將字體文件放在這個(gè)文件夾下,在此處打開窗口執(zhí)行命令
php ./tcpdf_addfont.php -b -t wryh -i wryh.ttf
之后就可以在 /vendor/tecnickcom/tcpdf/fonts/ 文件夾下找到三個(gè)同名的 wryh.ctg.z,wryh.php,wryh.z文件
3、然后你在執(zhí)行代碼時(shí),設(shè)置
$pdfWriter->SetFont(‘wryh’,‘’,20,‘’,false);
指明使用該字體即可。

方法二、使用unoconv將 word轉(zhuǎn)pdf (Centos 8)

1. 安裝libreoffice 安裝libreoffice

先為安裝 libreoffice 創(chuàng)建一個(gè)文件夾,用以保存下載的壓縮包 
	mkdir libreoffice
	cd libreoffice/
		# 下載 libreoffice 安裝包
	wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm.tar.gz
	wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm_sdk.tar.gz
	wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
	# 解壓安裝包
	tar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm.tar.gz
	tar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm_sdk.tar.gz
	tar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
	# 安裝命令
	yum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm/RPMS/*.rpm
	yum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm_sdk/RPMS/*.rpm
	yum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm_langpack_zh-CN/RPMS/*.rpm

為 libreoffice 配置全局變量

	注:要找到你安裝的環(huán)境中的 libreoffice下的program的位置
	vi /etc/profile
	# 配置文件中插入
	export PATH=$PATH:/opt/libreoffice7.3/program (填寫自己環(huán)境的位置)
	# 使環(huán)境變量生效
	source /etc/profile

檢查是否安裝成功 :

	 soffice --version
 能顯示出來 libreoffice 的版本,則安裝成功

2.安裝 unoconv

centos 8 中 使用 yum 安裝 unoconv 無效,所有我么使用wegt 下載壓縮包,解壓之后安裝

	wget https://github.com/unoconv/unoconv/archive/master.zip
	unzip master.zip
	cd unoconv-master/
	make install

使用命令執(zhí)行,使得word文件轉(zhuǎn)換格式為pdf

	解釋: unoconv -f (你的格式) -o 新文件存儲(chǔ)的位置 要轉(zhuǎn)換的文件的位置;
		unoconv -f pdf -o /root/1.pdf /root/1.docx
	查看新文件是否存在,確認(rèn)是否轉(zhuǎn)換成功

3.安裝字體 (若轉(zhuǎn)換的文件出現(xiàn)) 創(chuàng)建字體目錄,將自己的字體文件上傳至該文件夾下

	mkdir -p /usr/share/fonts/win

執(zhí)行以下命令,使字體生效

	mkfontscale 
	mkfontdir
	sudo fc-cache -fv

【報(bào)錯(cuò)】

若執(zhí)行 mkfontscale 出現(xiàn)報(bào)錯(cuò) mkfontscale not found

則執(zhí)行下列命令

	# 安裝mkfontscale
	yum install mkfontscale 
	# 安裝fontconfig 
	yum install fontconfig

4. 使用代碼將文件轉(zhuǎn)換

  /** 文件格式轉(zhuǎn)換
     * @param $old_file 舊文件  當(dāng)前項(xiàng)目絕對(duì)地址
     * @param $new_file 新文件  當(dāng)前項(xiàng)目中的絕對(duì)地址
     * @param $file_format 指定轉(zhuǎn)換的格式
     */
    protected static function  File_conversion($old_file,$new_file,$file_format='pdf')
    {
        $old_path = public_path($old_file);
        $new_path = public_path($new_file);
        shell_exec(" unoconv -f ".$file_format." -o ".$new_path." ".$old_path);
    }

總結(jié)

方法一:

  • 優(yōu)點(diǎn):操作較為簡(jiǎn)單,只需安裝一些php的擴(kuò)展就可以使用,
  • 弊端:但是該方法只適合一些word中內(nèi)容比較簡(jiǎn)單的進(jìn)行轉(zhuǎn)義為pdf,因?yàn)閿?shù)據(jù)格式復(fù)雜之后,會(huì)容易發(fā)生文字錯(cuò)位的問題。

方法二:

  • 優(yōu)點(diǎn):支持word中任何格式的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,且不容易出現(xiàn)錯(cuò)位
  • 弊端:需要在服務(wù)器中安裝軟件(本文已centos 8為例,講解。)可以根據(jù)自己的需求,選擇用那種方式。
  • 注意 :設(shè)置字體時(shí),最好與轉(zhuǎn)換前文件中的字體一致

若上述yum命令執(zhí)行的時(shí)候報(bào)錯(cuò):
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
則說明是官方鏡像地址被移動(dòng)了,不在mirrorlist 這里了,此時(shí)我們只需執(zhí)行,將地址切換到vault 去。
(阿里的鏡像因?yàn)閷?duì)centos8環(huán)境支持的停止,原本的鏡像就被移動(dòng)了。)

cd /etc/yum.repos.d/
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

到此這篇關(guān)于PHP實(shí)現(xiàn)word轉(zhuǎn)pdf的兩種方式的文章就介紹到這了,更多相關(guān)PHP word轉(zhuǎn)pdf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

吉安市| 舟曲县| 博乐市| 含山县| 松桃| 哈巴河县| 龙南县| 大方县| 房山区| 龙陵县| 边坝县| 蓝山县| 兖州市| 邵阳县| 北票市| 桃源县| 呼伦贝尔市| 灵石县| 曲水县| 宁城县| 鄂尔多斯市| 桓台县| 邵武市| 白山市| 闵行区| 南开区| 久治县| 资兴市| 通江县| 黑水县| 通榆县| 札达县| 会理县| 上高县| 页游| 肃北| 湘西| 富顺县| 苏尼特右旗| 通辽市| 那坡县|