Вывод содержимого PDF файла

Материал из Umicms
Версия от 15:24, 31 октября 2019; Denisov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 20

Задача

На многих сайтах может возникнуть потребность в выводе содержимого PDF файла непосредственно на страницу. Это может быть удобно интернет магазинам для вывода, к примеру, инструкции от устройства, которые как правило хранятся в PDF формате. Это позволит посмотреть файл не скачивая его.

Решение

Вывод содержимого файла на страницу осуществляется кодом:

<object data="http://путь к файлу" type="application/pdf" width="ширина" height="высота">
alt: <a href="http://путь к файлу"></a>
</object>

Для того чтобы не пришлось вставлять код для каждого товара в отдельности, можно написать нехитрый макрос, который будет выводить содержимое файла хранящегося в поле типа "Файл".

public function pdf_view($field,$width,$height){
	$current_page_id = cmsController::getInstance()->getCurrentElementId(); 
	$hierarchy = umiHierarchy::getInstance();
	$page = $hierarchy->getElement($current_page_id); 
	if (!$page instanceof umiHierarchyElement) {
		throw new publicException(getLabel('error-page-does-not-exist')); 
	}
	$pdf_source=$page->getValue($field);
	$pdf_code="<object data=\"$pdf_source\" type=\"application/pdf\" width=\"$width\" height=\"$height\">alt: <a href=\"$pdf_source\"></a></object>";
	return $pdf_code;
}

В качестве первого параметра, макрос будет применять идентификатор поля типа "Файл", в котором находится нужный файл, второй и третий параметр будут задавать ширину и высоту выводимой области. Благодаря атрибуту alt заданному в выводимом коде, в браузерах, которые не поддерживают подобный функционал, будет выводится ссылка на скачивание файла.