PHP 将word文件转为pdf
<hr><p> </p>
<p> 修改php.ini</p>
<ol>
<li>添加:extension=php_com_dotnet.dll </li>
<li>去除注释:com.allow_dcom = true</li>
<li>重启环境</li>
</ol>
<p> 配置office支持</p>
<ol>
<li>安装微软office套件。(office 2007 需要手动安装 `Microsoft Save as PDF and XPS<span class="qrcode_company_name">`)</span></li>
<li>配置office组件服务</li>
</ol><ol>
<li style="list-style-type: none"><ol>
<li>win+R打开运行菜单,输入dcomcnfg </li>
<li>找到 [组件服务] —— [计算机]—— [我的电脑] —— —— </li>
<li>右键 设置属性 [标识] 为 [交互式用户]</li>
</ol></li>
</ol>
<p> </p>
<hr>
<p>代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* @desc xmsb_wordToPdf 将word转换为pdf
* @paramstring $wordPath word原文件路径
* @paramstring $outPath pdf输出路径
* @return string
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> xmsb_wordToPdf(<span style="color: rgba(128, 0, 128, 1)">$wordPath</span>, <span style="color: rgba(128, 0, 128, 1)">$outPath</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 原文件不存在则返回错误</span>
<span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 128, 128, 1)">file_exists</span>(<span style="color: rgba(128, 0, 128, 1)">$wordPath</span><span style="color: rgba(0, 0, 0, 1)">))
{
</span><span style="color: rgba(0, 0, 255, 1)">return</span> 'word原文件不存在'<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 输出目录不存在则创建目录</span>
<span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 128, 128, 1)">file_exists</span>(<span style="color: rgba(128, 0, 128, 1)">$tmpPath</span> = <span style="color: rgba(0, 128, 128, 1)">rtrim</span>(<span style="color: rgba(128, 0, 128, 1)">$outPath</span>, <span style="color: rgba(0, 128, 128, 1)">basename</span>(<span style="color: rgba(128, 0, 128, 1)">$outPath</span><span style="color: rgba(0, 0, 0, 1)">))))
{
</span><span style="color: rgba(0, 128, 128, 1)">mkdir</span>(<span style="color: rgba(128, 0, 128, 1)">$tmpPath</span>, 0777, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(128, 0, 128, 1)">$filenamedoc</span> = <span style="color: rgba(0, 128, 128, 1)">dirname</span>(<span style="color: rgba(255, 0, 255, 1)">__FILE__</span>)."/".<span style="color: rgba(128, 0, 128, 1)">$wordPath</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(128, 0, 128, 1)">$filenamepdf</span> = <span style="color: rgba(0, 128, 128, 1)">dirname</span>(<span style="color: rgba(255, 0, 255, 1)">__FILE__</span>)."/".<span style="color: rgba(128, 0, 128, 1)">$outPath</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 删除已有同名文件</span>
<span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 128, 128, 1)">file_exists</span>(<span style="color: rgba(128, 0, 128, 1)">$filenamepdf</span><span style="color: rgba(0, 0, 0, 1)">))
{
</span><span style="color: rgba(0, 128, 128, 1)">unlink</span>(<span style="color: rgba(128, 0, 128, 1)">$filenamepdf</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 执行转换操作</span>
<span style="color: rgba(128, 0, 128, 1)">$word</span> = <span style="color: rgba(0, 0, 255, 1)">new</span> COM("word.Application") or <span style="color: rgba(0, 0, 255, 1)">die</span>("Could not initialise Object"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">$word</span>->Documents->Open(<span style="color: rgba(128, 0, 128, 1)">$filenamedoc</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">$word</span>->ActiveDocument->ExportAsFixedFormat(<span style="color: rgba(128, 0, 128, 1)">$filenamepdf</span>, 17, <span style="color: rgba(0, 0, 255, 1)">false</span>, 0, 0, 0, 0, 7, <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 0, 255, 1)">true</span>, 2, <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">$word</span>->Quit(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">unset</span>(<span style="color: rgba(128, 0, 128, 1)">$word</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 在页面中显示生成的pdf
// header('Content-type: application/pdf');
// header('filename='.$filenamepdf);
// readfile($filenamepdf);</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> '转换成功'<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 测试运行</span>
<span style="color: rgba(0, 0, 255, 1)">echo</span> xmsb_wordToPdf('./word/word1.docx', './pdf/output1.pdf');</pre>
</div>
<p> </p>
<hr>
<p>测试结果:</p>
<p>word文件内容如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1734903/201910/1734903-20191008103024120-2048849022.png" alt=""></p>
<p> </p>
<p> </p>
<p>转换后pdf内容如下:</p>
<p><img src="https://img2018.cnblogs.com/blog/1734903/201910/1734903-20191008103153690-97578923.png" alt=""></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
欢迎转载,转载时请注明来源。<br><br>
来源:https://www.cnblogs.com/XiaoMingBlingBling/p/11634027.html
頁:
[1]