Оффтоп Dmitry Gorbunov
355

Собираем лендинг из презентации

В закладки

Периодически мне в голову приходят идеи различных проектов - от идиотских, вроде печати стикербуков с порнозвездами, до, например, мессенджера, рассчитанного на то, чтобы поддерживать постоянную видеосвязь с несколькими пользователями в течение всего рабочего дня без обрывов и зависаний.

Обычно, взглянув на такую идею трезвым взглядом через 2-3 дня она кажется дурацкой или же крутой, но для реализации которой нужно 40 лет и 100 миллионов долларов.

Однажды, в ходе работы я столкнулся с необходимостью собрать лендинг, при этом у меня была готовая презентация со всем необходимым контентом.

Первым делом я радостно бросился к тильде, но наткнулся на это

выбери цвет, выбери ширину, выбери телевизор с большим экраном

Редактор прекрасный, интуитивно понятный, но это была история на несколько часов, тратить которые не хотелось. Нужно было что-то типа такого

А такого, как ни странно, не было. Во всех конструкторах нужна регистрация и нигде нет (возможно, просто я не нашел) возможности подгрузить готовый файл в pdf, ppt, да хоть из ворда. Везде нужно долго и мучительно копипастить, верстать и не забывать при этом страдать, конечно же.

Ну а если чего-то нет - это надо создать!

Для начала я выбрал pdf, как наиболее универсальный формат, который можно получить из чего угодно - хоть из ppt, хоть из doc, хоть из keynote.

Ведь, что такое лендинг - это по сути страницы или слайды, склеенные по порядку без пустого пространства (вот тут, чувствую, закидают меня помидорами)

Далее дело за малым - запрогать, отловить баги (вот это место - всегда проблема) и показать миру. Так и получился pdf2lp.net

Как оно работает.

1. Сохраняем свой ppt (или что угодно) в pdf (через "сохранить как" или "экспорт")

2. Идем на https://pdf2lp.net, жмем upload, выбираем файл, жмем upload еще раз (да, такой вот классный UI)

3. Ждем. В зависимости от объема файла от нескольких секунд до 5-7 минут в особо запущенных случаях

4. Лендинг готов, ссылкой можно делиться.

5. Чтобы стало совсем хорошо, можно привязать страницу к домену. Для этого идем в настройки своего доменного регистратора и включаем перенаправление (в godaddy https://dcc.godaddy.com/manage/**ВАШ_ДОМЕН**/dns)

Мы бесплатно будем хостить вашу страницу 7 дней, а на восьмой она исчезнет. Аминь.

Чтобы страница не исчезла - нужно немного заплатить - 5, 10 или 15$ в зависимости от периода хостинга. Для этого жмакаем extend в окне внизу страницы и платим через paypal или напрямую с карты.

Выглядеть страница, привязанная к домену, может, например, так

Задавайте ваши ответы! Особенно приветствуются комментарии "зачем это нужно?", "кому это нужно?", "и причем тут блокчейн?"

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Dmitry Gorbunov", "author_type": "self", "tags": [], "comments": 4, "likes": 8, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 42225, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15395' + '50799') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 42225, "author_id": 171577, "diff_limit": 1000, "urls": {"diff":"\/comments\/42225\/get","add":"\/comments\/42225\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/42225"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

4 комментария 4 комм.

Популярные

По порядку

Комментарий удален

0

Как же формы заявки, адаптивность, выделение текста, seo, скорость загрузки и т п? А обновлять сайт переделывая pdf? Столько гемора клиенту за 5-15$. Это видимо шутка.

Ответить
0

Это не шутка, а "давно пора уже". Ясен пень, что первый блин кривой и не вкусный, но наконец-то положено начало. Дальше будет только лучше для всех. Сайты будут делать секретари и манагеры в PPT, загружая их в аналогичные сервисы, приправленные нейросетями, и получая на выходе годные информационные странички.

Ответить
0

Спасибо за работу, но к счастью, проблема замечательно решается с обратной стороны использованием HTML-based фреймворков для презентаций типа [Reveal.js](https://revealjs.com). Презентации, сделанные таким образом, легко и непринуждённо (в крайних случаях с привлечением фронтендера) превращаются в лендинги. Одновременно решается целый класс проблем, связанных с обновлением стилей и кусков текста в презентациях. Особенно актуально для компаний, где презентаций десятки-сотни, и все/большинство из них надо поддерживать во вменяемом и актуальном состоянии.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления