garant / file-preview-generator-bundle
此Symfony扩展包提供用于生成办公文件(如.doc、.docx、.xls等)预览图的类。它包含客户端和服务器,允许在本地和远程使用。
Requires
- php: >=7.0
- ext-imagick: *
- guzzle/http: ^3.9
- liip/imagine-bundle: ^1.5
- react/http: dev-master
README
此扩展包提供用于生成办公文件(如.doc、.docx、.xls等)预览图的类。它包含客户端和服务器,允许在本地和远程使用。
系统要求(针对Microsoft Windows)
A) 必须安装Microsoft Office。您还需要配置COM对象。从开始菜单,点击运行并输入Dcomcnfg.exe。在组件服务中,点击控制台根,展开组件服务,展开计算机,然后是我的计算机,然后DCOM配置查找名为Microsoft Word 97-2003 Document的实体。右键单击它,然后属性。在身份选项卡中选择此用户,并输入正确的管理员登录名和密码。保存更改。
B) 安装GhostScript
C) 安装ImageMagic。将ImageMagic目录内modules/coders
文件夹中的所有*.dll文件复制到ImageMagic目录
和C:\Windows\System32
以及C:\Windows\SysWOW64
。将ImageMagic目录内modules/filters
文件夹中的所有*.dll文件复制到ImageMagic目录
、C:\Windows\System32
和C:\Windows\SysWOW64
。
D) 查找并下载存档php_imagick-3.4.1-7.0-ts-vc14-x64
将其中所有的CORE.dll文件复制到C:\Windows\System32
和C:\Windows\SysWOW64
将php_imagick.dll复制到您的php
目录下的ext
文件夹中
E) 将MAGICK_HOME添加到您的环境PATH
F) 编辑您的php
目录下的php.ini文件
在Windows扩展部分取消注释或添加以下行
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_openssl.dll
extension=php_com_dotnet.dll
extension=php_imagick.dll
;...
memory_limit = 1024M
G) 重启(这里真的很重要!)
安装
使用composer
此扩展包可以使用composer安装。
composer require garant/file-preview-generator-bundle
注册扩展包
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Liip\ImagineBundle\LiipImagineBundle(),
// ...
new Garant\GarantFilePreviewGeneratorBundle\GarantFilePreviewGeneratorBundle(),
);
// ...
}
配置
您可以添加远程服务器
garant_file_preview_generator:
#
# Available algorithms: random, round_robin
#server_select_algorithm: random
#
# Remote servers are used to generate file preview
# To start generator server use "garant:file-preview-generator:server-start <server_name>" command
#servers:
# local_unix:
# host: 0.0.0.0
# port: 9010
#
# remote_windows:
# host: 192.168.10.201
# port: 9010
#
# remote_windows_secure:
# protocol: https
# host: 192.168.10.201
# port: 9011
可选地,您可以配置Liip imagine过滤器来后处理预览图像
liip_imagine:
filter_sets:
avatar_square:
filters:
# Transforms 150x140 to 120x120, while cropping the width
thumbnail: { size: [120, 120], mode: outbound }
控制台命令
如果已配置远程服务器,您可以启动它。在远程服务器上调用此命令
bin/console garant:file-preview-generator:server-start <server_name>
您还可以使用-vvv标志启动服务器以检查内存使用情况并获取有关转换过程的其他信息。
您可以同时启动一些生成器并使用嵌入的监视器自动重启进程
bin/console garant:file-preview-generator:supervisor-start
服务
要生成预览,您可以使用特定的生成器。使用生成器工厂创建所需的生成器
garant_file_preview_generator.remote_client - Remote client.
garant_file_preview_generator.generator_factory - Factory service.
示例
$temp_file = new \SplFileObject('test.docx');
$factory = $this->container->get('garant_file_preview_generator.generator_factory');
$generator = $factory->get($temp_file, AbstractGenerator::PREVIEW_FORMAT_JPEG);
$jpeg_preview_file = $generator->generate($temp_file, AbstractGenerator::PREVIEW_FORMAT_JPEG);
if(!$jpeg_preview_file){
$this->get('logger')->err('Preview attachment: Preview generation error');
throw new \RuntimeException('Preview generation error');
}
dump($jpeg_preview_file);
// Generate filtered preview
$generator->setFilter('avatar_square');
$jpeg_preview_file = $generator->generate($temp_file, AbstractGenerator::PREVIEW_FORMAT_JPEG);
dump($jpeg_preview_file);
// Generate preview in PDF or other format
// see AbstractGenerator class constants
$generator = $factory->get($temp_file, AbstractGenerator::PREVIEW_FORMAT_PDF);
$pdf_preview_file = $generator->generate($temp_file, AbstractGenerator::PREVIEW_FORMAT_PDF);
// Optionally, you can convert range of pages
// $generator->setPageRange('0-2');
// Or set number of pages
// $generator->setPageCount(3);
dump($pdf_preview_file);