garant / file-preview-generator-bundle

此Symfony扩展包提供用于生成办公文件(如.doc、.docx、.xls等)预览图的类。它包含客户端和服务器,允许在本地和远程使用。

v2.0-RC1 2017-08-17 16:51 UTC

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\System32C:\Windows\SysWOW64

D) 查找并下载存档php_imagick-3.4.1-7.0-ts-vc14-x64

将其中所有的CORE.dll文件复制到C:\Windows\System32C:\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);