要使用 OnlyOffice Document Server 与 PHP 进行集成,您需要遵循以下步骤:
首先,您需要在服务器上安装 OnlyOffice Document Server。您可以从官方网站下载并安装它:https://helpcenter.onlyoffice.com/server/docker/document/docker-installation.aspx
确保您的服务器上已安装 PHP。接下来,您需要安装 php-zip
和 php-json
扩展。这些扩展允许 PHP 处理 ZIP 文件和 JSON 数据。在 Ubuntu 或 Debian 系统上,您可以使用以下命令安装这些扩展:
sudo apt-get install php-zip php-json
创建一个名为 onlyoffice.php
的文件,并在其中添加以下内容:
<?php
$documentServerUrl = 'http://localhost:8080'; // 请根据您的 OnlyOffice Document Server 设置进行更改
$apiKey = 'your_api_key'; // 请替换为您的 API 密钥
// 用于处理文档的回调函数
function handleDocument($doc) {
// 在这里处理文档,例如将其保存到数据库或执行其他操作
echo "Document processed: " . $doc->url;
}
// 检查请求方法
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 获取文档 ID
$documentId = $_POST['documentId'];
// 获取文档类型
$documentType = $_POST['documentType'];
// 获取文档 URL
$documentUrl = $documentServerUrl . '/documents/' . $documentId;
// 获取文档访问权限
$documentAccess = $_POST['access'];
// 创建一个 JSON 请求以获取文档数据
$requestJson = [
'documentId' => $documentId,
'documentType' => $documentType,
'key' => $apiKey,
'access' => $documentAccess,
];
// 发送请求到 OnlyOffice Document Server
$response = file_get_contents($documentServerUrl . '/api/v1/documents/' . $documentId, false, stream_context_create([
'http' => [
'header' => "Content-Type: application/json\r\n" .
"Authorization: Basic " . base64_encode($apiKey . ":") . "\r\n",
'method' => 'GET',
'content' => json_encode($requestJson),
],
]));
// 检查响应状态
if ($response === false) {
http_response_code(500);
echo "Error: Unable to fetch document data";
} else {
$responseData = json_decode($response, true);
// 如果请求成功,调用处理文档的回调函数
if ($responseData['status'] === 'ok') {
handleDocument($responseData);
} else {
http_response_code(500);
echo "Error: " . $responseData['message'];
}
}
} else {
http_response_code(405);
echo "Method Not Allowed";
}
?>
请确保将 $documentServerUrl
变量设置为您的 OnlyOffice Document Server 的实际 URL,并将 $apiKey
变量设置为一个有效的 API 密钥。
当用户通过 OnlyOffice 编辑文档时,您需要捕获文档数据并将其发送到您在第 3 步中创建的 PHP 脚本。您可以通过在 OnlyOffice 中使用 JavaScript API 来实现这一点。以下是一个简单的示例:
window.docEditor = new DocsAPI.DocEditor('container');
docEditor.load('onlyoffice.php', {
"documentId": "myDocument",
"documentType": "word",
"key": "your_api_key",
"access": "edit"
});
这将在名为 “container” 的 HTML 元素中加载 OnlyOffice 编辑器,并在用户编辑文档时将文档数据发送到 “onlyoffice.php” 脚本。
现在,当用户完成编辑并保存文档时,您的 PHP 脚本将处理文档数据(如将其保存到数据库或执行其他操作),并返回适当的响应。