Создание превьюшки из PDF и запись картинки в PREVIEW_PICTURE на лету по событию создания элемента
// проверить включено ли расширение Imagick (зайти через putty, в меню битрикс env, и там 8 -> 2 -> 7).
AddEventHandler("iblock", "OnAfterIBlockElementAdd", Array("Preview_PDF", "OnAfterIBlockElementAddHandler")); // вызываем функцию при событии "после добавления элемента в инфоблок
class Preview_PDF{
// создаем обработчик события "OnAfterIBlockElementAdd"
function OnAfterIBlockElementAddHandler(&$arFields){
if(CModule::IncludeModule("iblock")) // подключаем модуль для работы с инфоблоком
{
$arFile = ''; // создаем переменную в которой будет записан путь к файлу
$res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array("sort" => "asc"), Array("CODE"=>"FILE"));
if ($ob = $res->GetNext()){
$arFile = CFile::GetFileArray($ob['VALUE']); // получаем массив данных по файлу
}
}
//генерация превью
$pdf = $_SERVER["DOCUMENT_ROOT"].$arFile['SRC'];
$image = new Imagick($pdf.'[0]');
$image->setImageFormat( "jpg" );
$image->writeImage($_SERVER["DOCUMENT_ROOT"]. "/include/picture/".str_replace('pdf', 'jpg', $arFile["ORIGINAL_NAME"]));
// запись превью в массив arFields
$el = new CIBlockElement;
$arLoadProductArray = Array(
"PREVIEW_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]. "/include/picture/".str_replace('pdf', 'jpg', $arFile["ORIGINAL_NAME"]))
);
$res = $el->Update($arFields["ID"], $arLoadProductArray);
}
}