[Программирование, Презентации] Как создать свой SlideShare
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Как создать свой сервис для публикации презентаций?
Пример сервиса презентацииЗадача сводится к отображению презентации в браузере, для чего её надо преобразовать в HTML и плеер на JS.Microsoft решает эту задачу довольно сложным плеером непосредственно работая с PowerPoint и отображая его в своем плеере с помощью SVG, но мы таким сложным путем не пойдем и ограничимся конвертацией презентации в последовательность слайдов-изображений, как это и делает SlideShare.Конвертация презентации в изображенияЕсть три пути:
- пользователь из PowerPoint или Impress экспортирует PDF, а уже PDF конвертируется в изображения. Это простой с точки зрения создания сервиса вариант;
- получить как выше PDF и использовать PDF.js для отображения PDF в браузере с рендерингом PDF тоже в браузере (этот метод я обсуждать не буду, он имеет как сильные стороны, так и слабые);
- на сервере поднимается LibreOffice и он производит конвертацию PPT/PPTX в пригодные для веба форматы.
Презентация в SlideShare - это изображенияСудя по характерным для LibreOffice артефактам конвертации PPTX , именно он и используется на SlideShare. Этот вариант более сложен необходимостью создания очереди на конвертацию т.к. запущенный процесс LibreOffice может одновременно конвертировать только один документ, ну и в целом гонять сложный навороченный сервер не очень безопасно и если сервис презентаций будет публичным, надо процесс LibreOffice как-то изолировать от основной системы.Плюсы выбора PDF: пользователь сразу видит ошибки экспорта в PDF как со стороны LibreOffice (разъезжается верстка и т.д.), так и со стороны PowerPoint (могут некорректно работать тени), ну и можно избежать ошибок конвертации PPTX, характерные именно для LibreOffice.Плюсы LibreOffice: проще для пользователя т.к. не надо его просить экспортировать в PDF.Сам я в своём сервисе смотрел на LibreOffice, но в итоге пока используется вариант с PDF, поэтому инструкция будет написана про него. Но отмечу, что LibreOffice используется в таких системах как Alfresco, а для автоматизации запуска LibreOffice можно использовать jar-приложение jodconverter, о котором уже писали мельком на Хабре.Конвертация PDF в изображенияЕсть несколько программ-конвертеров PDF в изображения: Poppler, Apache PDFBox, ghostscript, mupdf и ряд других. Можно дописать немного кода к Pdfium и получить тоже самое. Можно купить коммерческие библиотеки. Можно использовать любую, суть там сводится к запуску исполняемого файла с передачей номера страницы и формата изображения. Скажем при использовании Poppler для получения изображения 2 страницы в формате JPEG надо запустить pdftoppm таким образом: $ pdftoppm -f 2 -l 2 -r 96 -jpeg input.pdf > page-2.jpgВ примере с pdftoppm из Poppler надо обратить внимание на параметр -r 96, означающий разрешение, в котором будут рендерить PDF (эквивалентно указанию какую плотность пикселей имел бы принтер, если бы PDF печатали на нём). В некоторых из программ для конвертации можно указать число пикселей в которых должно получиться изображение. Тонкость в том, что PDF - векторный формат, а выходное изображение - растровый и параметр -r отвечает за то, в каком разрешении векторный формат будет преобразовываться в растровый. Аналогичный параметр есть и у других программ-конвертеров.Если всё-таки спросите меня какой конвертер выбрать, я рекомендую начать с Poppler за удобную лицензию. Apache PDFBox работает тоже неплохо, но потребляет больше ресурсов т.к. написан на Java.ПроблемыОчевидно, раз интерактивный формат презентации превратился в изображения, все переходы, весь интерактив и видео в таком плеере работать не будут.Встречаются ошибки как в самих загружаемых PDF (из-за ошибок в генераторах PDF), так и в программах-конверторах. В моем ПО программа-конвертер сама перебирает несколько программ если рендеринг в изображение с помощью предыдущей программы завершился с ошибкой.Предложенная схема не решает проблему с работой гиперссылок. Её надо решать отдельно т.к. на современных презентациях гиперссылки встречаются часто и не уметь работать с гиперссылками - плохо (SlideShare умеет).Не работает выделение текста. Обычно в таких случаях решением является "текстовая подложка", когда из документа выделяется текст и подкладывается под изображение, но можно просто весь текст из презентации вылить в textarea ниже самой страницы для поисковой оптимизации.ОптимизацииКонвертировать можно сразу после загрузки PDF, а можно лениво при первом обращении к странице. Проблема в том, что конвертация (рендеринг страниц в изображения) занимает время и место на диске. Если конвертировать сразу, пользователю надо ждать окончания конвертации прежде чем он увидит плеер, если лениво, то изображения можно положить в кеш и затем очистить кеш для экономии места, но первый просмотр будет подтормаживать. Я в своей практике использую ленивый рендеринг.Люди часто смотрят презентации со смартфонов и здесь хочется лить в них поменьше трафика. Для этого автоматически можно:
- отдавать пользователю изображения в JPEG или WebP, выбирая наиболее оптимальный для устройства формат;
- уменьшить изображение до размера экрана пользователя или видимой части плеера, чтобы уменьшить трафик на смартфоны.
По форматам изображений надо иметь в виду, что WebP хорошо работает и с текстом и с рисунками на слайде, но не работает с Safari, IE и может не работать со старым Edge, а JPEG на тексте может артефакты сжатия оставлять. Есть еще везде поддерживаемый PNG, но он слишком много места занимает на слайдах с рисунками и имеет слишком большой размер файла при высоких разрешениях, поэтому его не стоит как основной формат выбирать.Размышления про будущее PowerPointПроблемы во многом связаны с тем, что PowerPoint с самого начала не веб-формат, поэтому отображение его в вебе требует трансформацию в HTML-совместимые форматы, что просто сделать только пока работаешь со слайдами как с изображениями, а когда появляются более сложные задачи, то даже Microsoft полностью весь функционал PowerPoint при просмотре в вебе не реализует.Поэтому PowerPoint должен когда-нибудь уйти, а заменят его интерактивные презентации на HTML5+JS. Но вот сам редактор PowerPoint весьма удобен, многим он нравится и это поддерживает популярность детища Microsoft (напомню, что у самой Microsoft есть Sway на веб-стеке).ИтогиСоздать собственный простейший сервис за счет готового ПО работы с презентациями достаточно просто. Правда у такого сервиса будет ряд недостатков, которые надо дорабатывать и что будет уже более трудоёмко, т.к. нет простых готовых решений в открытом доступе.Если вы писать сами код не хотите, я раздаю бесплатные лицензии на электронную библиотеку ELiS для создания электронных библиотек с открытыми ресурсами. В готовом плеере уже есть:
- трекинг чтения (кто когда и какие страницы смотрел);
- полупрозрачный курсор (замена лазерной указки).
Пример плеераМожно покликать в пример презентации как наглядное представление, что можно сделать по описанному выше подходу.
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, .NET, C#] 6 малоизвестных фич C#/.NET (перевод)
- [Программирование, Машинное обучение, Учебный процесс в IT, Социальные сети и сообщества, Изучение языков] 9 Reasons Why Students Don’t Want You as a Teacher
- [Программирование, C++, Работа с 3D-графикой, Разработка игр, CGI (графика)] Vulkan. Руководство разработчика. Слои валидации (перевод)
- [Программирование, Разработка мобильных приложений, Разработка под Android, Развитие стартапа, Софт] Бизнес-идея для программистов. Совершенно незанятая ниша на рынке программ
- [Информационная безопасность, Программирование, Разработка мобильных приложений] Безопасная разработка: SAST, DAST, IAST и RASP
- [Программирование, Java, Amazon Web Services, Gradle, Облачные сервисы] Если у вас не работает Spring BootJar
- [Программирование, Компиляторы, Отладка, Софт] Типы в инженерных задачах
- [Python, Программирование, Разработка систем связи, Научно-популярное, Космонавтика] Декодируем сигнал метеоспутника NOAA в 50 строчек кода
- [Программирование, Rust, Софт] Операционная система Redox 0.6, написанная на Rust: что нового в выпуске?
- [Разработка веб-сайтов, PHP, Программирование] Ловушки для современного PHP
Теги для поиска: #_programmirovanie (Программирование), #_prezentatsii (Презентации), #_powerpoint, #_ja_piarjus (я пиарюсь), #_prezentatsii (презентации), #_programmirovanie (
Программирование
), #_prezentatsii (
Презентации
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:25
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Как создать свой сервис для публикации презентаций? Пример сервиса презентацииЗадача сводится к отображению презентации в браузере, для чего её надо преобразовать в HTML и плеер на JS.Microsoft решает эту задачу довольно сложным плеером непосредственно работая с PowerPoint и отображая его в своем плеере с помощью SVG, но мы таким сложным путем не пойдем и ограничимся конвертацией презентации в последовательность слайдов-изображений, как это и делает SlideShare.Конвертация презентации в изображенияЕсть три пути:
Презентация в SlideShare - это изображенияСудя по характерным для LibreOffice артефактам конвертации PPTX , именно он и используется на SlideShare. Этот вариант более сложен необходимостью создания очереди на конвертацию т.к. запущенный процесс LibreOffice может одновременно конвертировать только один документ, ну и в целом гонять сложный навороченный сервер не очень безопасно и если сервис презентаций будет публичным, надо процесс LibreOffice как-то изолировать от основной системы.Плюсы выбора PDF: пользователь сразу видит ошибки экспорта в PDF как со стороны LibreOffice (разъезжается верстка и т.д.), так и со стороны PowerPoint (могут некорректно работать тени), ну и можно избежать ошибок конвертации PPTX, характерные именно для LibreOffice.Плюсы LibreOffice: проще для пользователя т.к. не надо его просить экспортировать в PDF.Сам я в своём сервисе смотрел на LibreOffice, но в итоге пока используется вариант с PDF, поэтому инструкция будет написана про него. Но отмечу, что LibreOffice используется в таких системах как Alfresco, а для автоматизации запуска LibreOffice можно использовать jar-приложение jodconverter, о котором уже писали мельком на Хабре.Конвертация PDF в изображенияЕсть несколько программ-конвертеров PDF в изображения: Poppler, Apache PDFBox, ghostscript, mupdf и ряд других. Можно дописать немного кода к Pdfium и получить тоже самое. Можно купить коммерческие библиотеки. Можно использовать любую, суть там сводится к запуску исполняемого файла с передачей номера страницы и формата изображения. Скажем при использовании Poppler для получения изображения 2 страницы в формате JPEG надо запустить pdftoppm таким образом: $ pdftoppm -f 2 -l 2 -r 96 -jpeg input.pdf > page-2.jpgВ примере с pdftoppm из Poppler надо обратить внимание на параметр -r 96, означающий разрешение, в котором будут рендерить PDF (эквивалентно указанию какую плотность пикселей имел бы принтер, если бы PDF печатали на нём). В некоторых из программ для конвертации можно указать число пикселей в которых должно получиться изображение. Тонкость в том, что PDF - векторный формат, а выходное изображение - растровый и параметр -r отвечает за то, в каком разрешении векторный формат будет преобразовываться в растровый. Аналогичный параметр есть и у других программ-конвертеров.Если всё-таки спросите меня какой конвертер выбрать, я рекомендую начать с Poppler за удобную лицензию. Apache PDFBox работает тоже неплохо, но потребляет больше ресурсов т.к. написан на Java.ПроблемыОчевидно, раз интерактивный формат презентации превратился в изображения, все переходы, весь интерактив и видео в таком плеере работать не будут.Встречаются ошибки как в самих загружаемых PDF (из-за ошибок в генераторах PDF), так и в программах-конверторах. В моем ПО программа-конвертер сама перебирает несколько программ если рендеринг в изображение с помощью предыдущей программы завершился с ошибкой.Предложенная схема не решает проблему с работой гиперссылок. Её надо решать отдельно т.к. на современных презентациях гиперссылки встречаются часто и не уметь работать с гиперссылками - плохо (SlideShare умеет).Не работает выделение текста. Обычно в таких случаях решением является "текстовая подложка", когда из документа выделяется текст и подкладывается под изображение, но можно просто весь текст из презентации вылить в textarea ниже самой страницы для поисковой оптимизации.ОптимизацииКонвертировать можно сразу после загрузки PDF, а можно лениво при первом обращении к странице. Проблема в том, что конвертация (рендеринг страниц в изображения) занимает время и место на диске. Если конвертировать сразу, пользователю надо ждать окончания конвертации прежде чем он увидит плеер, если лениво, то изображения можно положить в кеш и затем очистить кеш для экономии места, но первый просмотр будет подтормаживать. Я в своей практике использую ленивый рендеринг.Люди часто смотрят презентации со смартфонов и здесь хочется лить в них поменьше трафика. Для этого автоматически можно:
Пример плеераМожно покликать в пример презентации как наглядное представление, что можно сделать по описанному выше подходу. =========== Источник: habr.com =========== Похожие новости:
Программирование ), #_prezentatsii ( Презентации ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:25
Часовой пояс: UTC + 5