欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

方法一、使用phpword和tcpdf

1. 使用composer 安裝 phpword和tcpdf

	composer require phpoffice/phpword
	composer require tecnickcom/tcpdf

2. 示例代碼 (試例框架是laravel,以下文件默認是放置在public中)

//			你的初始文件地址
			$word = 'test.docx';
           \PhpOffice\PhpWord\Settings::setPdfRendererPath(base_path('vendor/tecnickcom/tcpdf'));
           //設(shè)置轉(zhuǎn)換pdf的類庫名(DomPDF、MPDF、TCPDF)需要下載對應(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è)置字體

亂碼一般是因為字體問題

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

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

1. 安裝libreoffice 安裝libreoffice

先為安裝 libreoffice 創(chuàng)建一個文件夾,用以保存下載的壓縮包 
	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 新文件存儲的位置 要轉(zhuǎn)換的文件的位置;
		unoconv -f pdf -o /root/1.pdf /root/1.docx
	查看新文件是否存在,確認是否轉(zhuǎn)換成功

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

	mkdir -p /usr/share/fonts/win

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

	mkfontscale 
	mkfontdir
	sudo fc-cache -fv

【報錯】

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

則執(zhí)行下列命令

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

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

  /** 文件格式轉(zhuǎn)換
     * @param $old_file 舊文件  當(dāng)前項目絕對地址
     * @param $new_file 新文件  當(dāng)前項目中的絕對地址
     * @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)點:操作較為簡單,只需安裝一些php的擴展就可以使用,
  • 弊端:但是該方法只適合一些word中內(nèi)容比較簡單的進行轉(zhuǎn)義為pdf,因為數(shù)據(jù)格式復(fù)雜之后,會容易發(fā)生文字錯位的問題。

方法二:

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

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

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實現(xiàn)word轉(zhuǎn)pdf的兩種方式的文章就介紹到這了,更多相關(guān)PHP word轉(zhuǎn)pdf內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP array_shift()用法實例分析

    PHP array_shift()用法實例分析

    這篇文章主要介紹了PHP array_shift()用法,結(jié)合實例形式分析了array_shift()的功能、使用方法、相關(guān)問題與解決方法,需要的朋友可以參考下
    2019-01-01
  • PHP數(shù)組操作類實例

    PHP數(shù)組操作類實例

    這篇文章主要介紹了PHP數(shù)組操作類,涉及php針對數(shù)組的刪除、轉(zhuǎn)換、分組、排序等相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • php圖片放大合成加入字體操作示例介紹

    php圖片放大合成加入字體操作示例介紹

    這篇文章主要介紹了php圖片放大、圖片合成、圖片放入字體的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 調(diào)整優(yōu)化您的LAMP應(yīng)用程序的5種簡單方法

    調(diào)整優(yōu)化您的LAMP應(yīng)用程序的5種簡單方法

    Wikipedia、Facebook 和 Yahoo! 等主要 web 屬性使用 LAMP 架構(gòu)來為每天數(shù)百萬的請求提供服務(wù),而 Wordpress、Joomla、Drupal 和 SugarCRM 等 web 應(yīng)用程序軟件使用其架構(gòu)來讓組織輕松部署基于 web 的應(yīng)用程序。
    2011-06-06
  • 一個PHP的String類代碼

    一個PHP的String類代碼

    PHP String 類,暫時只有encode,decode方法
    2010-04-04
  • PHP判斷一個變量是否為整數(shù)、正整數(shù)的方法示例

    PHP判斷一個變量是否為整數(shù)、正整數(shù)的方法示例

    這篇文章主要給大家介紹了關(guān)于PHP判斷一個變量是否為整數(shù)、正整數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • PHP對象Object的概念 介紹

    PHP對象Object的概念 介紹

    類提供了一個基礎(chǔ),可以在此基礎(chǔ)上創(chuàng)建實體(即這個類所建模的實體)的特定實例,這些特定實例稱為對象(object)
    2012-06-06
  • php strtotime 函數(shù)UNIX時間戳

    php strtotime 函數(shù)UNIX時間戳

    int strtotime ( string time [, int now]) 本函數(shù)預(yù)期接受一個包含英文日期格式的字符串并嘗試將其解析為 UNIX 時間戳。
    2009-01-01
  • PHP結(jié)合Ueditor并修改圖片上傳路徑

    PHP結(jié)合Ueditor并修改圖片上傳路徑

    使用ueditor編輯器,附件默認在ueditor/php/upload/, 但是大家的附件地址的默認路徑可不是這個 ,需要修改ueditor,具體如何操作呢,下面我們就來詳細講解下
    2016-10-10
  • 關(guān)于ob_get_contents(),ob_end_clean(),ob_start(),的具體用法詳解

    關(guān)于ob_get_contents(),ob_end_clean(),ob_start(),的具體用法詳解

    本篇文章是對ob_get_contents(),ob_end_clean(),ob_start(),的具體用法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論