目录方法一、使用PHPWord和tcpdf方法二、使用unoconv将 word转pdf (Centos 8)总结方法一、使用phpword和tcpdf 1. 使用composer
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'));
//设置转换pdf的类库名(DomPDF、MPDF、TCPDF)需要下载对应的类库
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
// 加载word文件
$wordPdf = \PhpOffice\PhpWord\ioFactory::load($word);
// 读取生成的docx文件 并且指明要生成的文件格式
$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
// 设置文字字体,文字大小
$pdfWriter->SetFont('wryh','',20,'',false);
// 生成pdf文件 的保存地址
$temp_path = 'test.pdf'
// 文件保存
$pdfWriter->save($temp_path);
return $temp_path;
3. 中文乱码 - 设置字体
乱码一般是因为字体问题
1、从网上下载一个ttf文
2、找到 /vendor/tecnickcom/tcpdf/tools 的位置,将字体文件放在这个文件夹下,在此处打开窗口执行命令
php ./tcpdf_addfont.php -b -t wryh -i wryh.ttf
之后就可以在 /vendor/tecnickcom/tcpdf/fonts/ 文件夹下找到三个同名的 wryh.ctg.z,wryh.php,wryh.z文件
3、然后你在执行代码时,设置
$pdfWriter->SetFont(‘wryh’,‘’,20,‘’,false);
指明使用该字体即可。
1. 安装libreoffice 安装libreoffice
先为安装 libreoffice 创建一个文件夹,用以保存下载的压缩包
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
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);
}
方法一:
方法二:
若上述yum命令执行的时候报错:
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
则说明是官方镜像地址被移动了,不在mirrorlist 这里了,此时我们只需执行,将地址切换到vault 去。
(阿里的镜像因为对centos8环境支持的停止,原本的镜像就被移动了。)
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-*
到此这篇关于PHP实现word转pdf的两种方式的文章就介绍到这了,更多相关PHP word转pdf内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: PHP实现word转pdf的两种方式(有用!)
本文链接: https://lsjlt.com/news/168158.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0