• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/ui/viewer/previewmanager.php
  • Класс: BitrixMainUIViewerPreviewManager
  • Вызов: PreviewManager::sendPreview
protected function sendPreview($file, $forceTransformation = false): ResponseAjaxJson
{
	$render = $this->buildRenderByFile(
		$file['ORIGINAL_NAME'],
		$file['CONTENT_TYPE'],
		$this->getSourceUri(),
		$this->prepareRenderParameters($file)
	);
	if ($render instanceof RendererStub || $forceTransformation)
	{
		$filePreviewData = $this->getViewFileData($file);
		if ($filePreviewData)
		{
			$sourceUri = $this->getSourceUri()->addParams([
				self::GET_KEY_TO_SEND_PREVIEW_CONTENT => $this->signFileId($filePreviewData['ID']),
			]);

			$render = $this->buildRenderByFile(
				$filePreviewData['ORIGINAL_NAME'],
				$filePreviewData['CONTENT_TYPE'],
				$sourceUri
			);
		}
		else
		{
			$generatePreview = $this->generatePreview($file['ID']);
			if ($generatePreview instanceof MainResult)
			{
				if ($generatePreview->isSuccess())
				{
					return ResponseAjaxJson::createSuccess($generatePreview->getData());
				}

				return ResponseAjaxJson::createError($generatePreview->getErrorCollection());
			}

			return ResponseAjaxJson::createError();
		}
	}

	if ($render)
	{
		return ResponseAjaxJson::createSuccess([
			'html' => $render->render(),
			'data' => $render->getData(),
		]);
	}

	return ResponseAjaxJson::createError();
}