happydemon/unoserver

Laravel与UnoServer交互的包装器,允许您使用LibreOffice转换文档。

此包的官方仓库似乎已消失,因此该包已被冻结。

dev-master 2023-09-29 07:18 UTC

This package is auto-updated.

Last update: 2024-07-29 08:55:28 UTC


README

Latest Version on Packagist Total Downloads

此包是针对unoserver命令的Laravel特定包装器,这些命令可以让您轻松转换办公文档,就像在LibreOffice中一样。

提供了辅助命令,以便您快速设置。

安装

在项目中安装包

composer require happydemon/unoserver && \

发布供应商

您可以使用vendor:publish --tag=unoserver来发布配置文件和平台安装程序。

您还可以更具体地指定要发布的内容

  • vendor:publish --tag=unoserver.config
  • vendor:publish --tag=unoserver.platforms

设置

为了快速开始,我们捆绑了安装脚本,这些脚本是通过vendor:publish导出的。

从您的应用程序根目录中,您可以运行

sh platforms/mac
sh platforms/ubuntu

对于Mac,重要的是要安装homebrew,对于Ubuntu python3

该脚本将安装LibreOffice、unoserver并设置一些.env变量。

Sail

配置

vendor:publish发布了unoserver.php配置文件。

如果您正在使用生成的unoserver命令来启动服务器,您需要定义本地LibreOffice可执行文件的路径。

# For mac usually: /Applications/LibreOffice.app/Contents/MacOS/soffice
UNSORSERVER_EXEC_LIBRE=

您应该始终提供支持unoserver的Python可执行文件的路径

# For mac usually: /Applications/LibreOffice.app/Contents/Resources/python
UNSORSERVER_EXEC_PYTHON=

重要:当您使用设置脚本设置环境时,自动配置了环境变量UNSORSERVER_EXEC_LIBREUNSORSERVER_EXEC_PYTHON

命令

make:unoserver-cmd

此命令生成bash脚本,以

  • 启动unoserver
  • 向该服务器发送转换请求

参数

它只接受一个参数,即服务器名(这将是一个在unoserver.servers.*配置中定义的服务器),如果不提供,它将使用默认服务器。

参数

php artisan make:unoserver-cmd

这将生成base_path('bin')中的两个文件

  • unoserver:让您快速启动一个unoserver实例
  • unoconvert:让您正确地与unoserver实例交互

如果已定义了作为参数的服务器,则两个文件的名称都将添加该服务器名称后缀。

始终确保在本地开发时有一个bin/unoserver正在运行。

用法

可以使用HappyDemon\UnoServer\Facades\UnoServer外观连接到服务器并为我们发送要转换的文档。

配置

连接定义在unoserver.servers配置下。

有两种配置类型;

脚本

您可以定义bash脚本的路径。

您可以通过查看php artisan unoserver:helpers -h的输出作为命令文件的示例。

<?php

return [
    'servers' => [
        'script' => [
            'command' => '~/www/bin/unoconvert',
        ]
    ]
];

连接

您也可以手动定义服务器连接。

<?php

return [
    'servers' => [
        'remote' => [
            // IP where the unoserver is running
            'interface' => '127.0.0.1',
            'port' => 2002,
        ]
    ]
];

转换

为了转换,我们必须定义我们将连接到哪个服务器以及源文件的本地文件路径。

您可以转换文档或电子表格

use HappyDemon\UnoServer\Facades\UnoServer;

// Use the UnoServerFactory to create a Unoserver
$document = app(\HappyDemon\UnoServer\UnoServerFactory::class)
    ->connect('script')
    ->fromDocument(storage_path('myWordFile.docx'))

// Use the UnoServer facade to create a UnoServer
$document = UnoServer::connect('script')
    ->fromDocument(storage_path('myWordFile.docx'))

// Delete the source file after a successful conversion:   
$spreadsheet = UnoServer::connect('remote')
    ->fromSpreadsheet(storage_path('mySheets.xlsx', true))

下一步是定义我们将转换成什么格式并执行调用

$generatedFile = $document->toFormat('pdf')
    ->convert()

convert()调用返回一个Illuminate\Http\UploadedFile对象,它提供了许多选项来存储您的文件在任何文件系统磁盘上

<?php
$generatedFile->store('documents/rendered', ['disk' => 'public']);
$generatedFile->storePublicly('documents/rendered', ['disk' => 'public']);

$generatedFile->storeAs('documents/rendered','yourWordDoc.pdf', ['disk' => 'public']);
$generatedFile->storePubliclyAs('documents/rendered','yourWordDoc.pdf', ['disk' => 'public']);

IOC绑定

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅contributing.md以获取详细信息及待办事项列表。

安全

如果您发现任何与安全相关的问题,请通过电子邮件maxim.kerstens@gmail.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT。请参阅许可证文件以获取更多信息。