使用 PHP 和 LiveDocx 创建 Word 文档的缩略图
在系统中的任何文档列表中,最好添加一些文档缩略图,以便您的用户可以在下载文档之前快速了解文档的外观。这是仅显示文档类型图标的一个很好的替代方法。
借助名为LiveDocx的服务,创建Word文档图标非常简单。LiveDocx是作为Web服务创建的,允许从一个简单的模板轻松创建大多数文档格式。但是,可以将普通Word文档作为模板文件发送并获取该文件的图像作为回报。
将LiveDocx与PHP结合使用的最佳方式是使用ZendFramework中包含的LiveDocx类。通过在脚本顶部包含文件Zend/Service/LiveDocx/MailMerge.php,您可以在ZendFramework应用程序之外使用它。
注意:您需要在LiveDocx上注册一个帐户,然后才能使用该服务。他们有一个很好的免费服务选项,可以让您每天创建数量有限的图像。要使用ZendFramework类登录LiveDocx,您只需创建Zend_Service_LiveDocx_MailMerge的新实例并设置用户名和密码字段。当您与LiveDocx服务通信时,您将自动登录。
require_once('Zend/Service/LiveDocx/MailMerge.php'); $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge(); //登录LiveDocx $phpLiveDocx->setUsername('yourlivedocxusername') ->setPassword('yourlivedocxpassword');
要获取Word文档的图像,您必须首先使用方法将其发送到LiveDocxsetLocalTemplate()。我们使用的文件并不是真正的模板,但服务仍会以我们可以使用的方式理解它。模板就位后,您可以调用该createDocument()方法让LiveDocx处理模板。处理完模板后,我们就可以提取一张或多张图像,然后将其转换为缩略图。该方法getBitmaps()用于将我们创建的文档转换为图像文件,然后我们可以保存该文件。这getBitmaps()方法需要开始和结束页面、缩放因子和要创建的图像类型(多种格式可用)。缩放系数是一个百分比值,指示返回的图像应该有多大。这是794像素宽和1123像素高的总图像大小的百分比。另一种方法是生成全尺寸图像,然后将其转换为缩略图。我发现这是一个更好的选择,因为这意味着您可以在生成缩略图时对图像进行裁剪(或应用您想要的任何效果)。
下面的代码显示了从Word文档创建图像,然后使用PHPGD2库将该图像转换为缩略图。创建的缩略图是250像素的正方形,因此会裁剪原始矩形图像。
setUsername('yourlivedocxusername') ->setPassword('yourlivedocxpassword'); //传输我们需要转换的文件 $phpLiveDocx->setLocalTemplate('documenttoconvert.doc'); //转换文件 $phpLiveDocx->createDocument(); //获取文档的图像 //(fromPage,toPage,zoomFactor,format) $bitmaps = $phpLiveDocx->getBitmaps(1, 1, 100, 'png'); //为特定大小的缩略图创建一个支架 $thumb_width = 250; $thumb_height = 250; $thumb = imagecreatetruecolor($thumb_width, $thumb_height); //为单个图像创建缩略图 foreach ($bitmaps as $pageNumber => $bitmapData) { //创建文件名 $filename = sprintf('documentPage%d.png', $pageNumber); //获取图像作为GD2数据 $doc_image = imagecreatefromstring($bitmapData); //调整图像大小 imagecopyresampled($thumb, $doc_image, 0, 0, 0, 0, $thumb_width, $thumb_height, 794, 1123); //保存图片 imagepng($thumb, $filename); }