happydemon / unoserver
Laravel与UnoServer交互的包装器,允许您使用LibreOffice转换文档。
此包的官方仓库似乎已消失,因此该包已被冻结。
Requires
- php: 7.4|~8
- illuminate/support: ~7|~8|~9|~10
- touhidurabir/laravel-stub-generator: ^1.0
Requires (Dev)
- nunomaduro/collision: ^6.2
- orchestra/testbench: ~7
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-07-29 08:55:28 UTC
README
此包是针对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_LIBRE
和UNSORSERVER_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。请参阅许可证文件以获取更多信息。