Архив рубрики ~Лента новостей~

Часть 2. Конвейер: как текст превращается в слайды, и при чём тут миллионы

Часть 2. Конвейер: как текст превращается в слайды, и при чём тут миллионы
Часть 2. Конвейер: как текст превращается в слайды, и при чём тут миллионы

В прошлой части я остановился на неприятном открытии: чтобы получить настоящий .pptx, файл нужно собирать вручную, по кирпичику. В этой расскажу, как из этого вышла не бессонница, а система.

Проблема: вручную — это буквально вручную

Когда понимаешь, что каждый слайд — это набор текстовых описаний («вот прямоугольник, вот в нём текст такого-то размера, вот картинка в таких-то координатах»), первая реакция — ужас. Писать это руками на каждый слайд невозможно: собьёшься на третьем. Нужна была не «ручная сборка», а завод, где детали едут по ленте.

Почему конвейер из модулей

Я разбил всё на независимые модули, и каждый общается с соседом на одном языке — через структуру данных (по сути, аккуратный список «что на каком слайде»). Плюс такого подхода: любой кусок можно переделать, не трогая остальные. Сломался сборщик графиков — чиню только его, парсер и упаковщик даже не узнают.
Лента получилась такая: ты описываешь презентацию → парсер переводит описание в строгую структуру → планировщик раскладывает по слайдам и подбирает макет → сборщик собирает сами слайды → упаковщик складывает всё в архив и переименовывает в .pptx → валидатор проверяет, что файл не битый.
Макеты я не дал выдумывать на ходу — завёл фиксированный набор из 10 штук: титульный, раздел, «заголовок + текст», «текст слева, картинка справа», две колонки, картинка на весь слайд, слайд с графиком, дашборд, цитата и финальный слайд с контактами. Этого хватает на 99% реальных презентаций, и зато ничего не разъезжается.

Как на практике: миллионы, которые оказались миллиметрами

Вот тут читателей ждёт мой любимый момент. Внутри формата всё меряется в единицах под названием EMU. Чтобы вы оценили масштаб: в одном дюйме — 914 400 таких единиц. Слайд 16:9 имеет ширину 12 192 000. Когда я впервые это увидел, то решил, что где-то опечатка на три нуля.
Считать такое руками — верный способ поседеть. Поэтому первое, что я сделал, — маленькие помощники, которые переводят человеческие сантиметры в эти космические числа:
// хочу «отступ 2 см слева» — пишу cm(2), а не 731520
function cm(v) { return Math.round(v * 360000); }
function pt(v) { return Math.round(v * 12700); } // это для размеров шрифта
Выглядит скромно, но именно эти две строчки сохранили мне нервы на всём проекте. Правило простое: если какое-то число встречается в коде дважды — спрячь его за понятное имя.

Один код — любая версия PowerPoint

Я хотел, чтобы инструмент собирал файл и под старый PowerPoint 2010, и под современный. Проблема в том, что новые версии умеют то, чего старые не понимают, и если засунуть «новую» фишку в файл для старой версии — он откроется криво или не откроется совсем.
Решение — своеобразный «фейсконтроль». Для каждой версии я держу список разрешённых возможностей, и перед тем как вставить что-то модное, скрипт спрашивает: «а этой версии такое можно?»
featureGate = {
2010: { morph: false, model3d: false }, // плавный переход — нельзя
2016: { morph: true, model3d: false }, // плавный переход — можно
2019: { morph: true, model3d: true }, // и 3D тоже
};
Если нельзя — не ломаемся, а аккуратно подменяем: модный переход превращаем в простой, 3D — в обычную картинку. Пользователь максимум не увидит спецэффект, но файл откроется везде.

Грабли №2: шрифт, который сбежал

Отдельные грабли — кириллица. Красивый шрифт может прекрасно выглядеть у меня, а на чужом компьютере, где его нет, молча подменится на другой — и вся вёрстка «поедет». Проверено на себе: отправляешь человеку красоту, а он открывает нечто. Вывод был суровый и простой: держаться обычных шрифтов с гарантированной кириллицей. Скучно, но надёжно. Красота, которую видит только автор, — это не красота, а ловушка.

Как я проверял, что ничего не сломалось

Поскольку одна ошибка в деталях — и файл не открывается, я завёл два рубежа обороны. Первый — валидатор: перед выдачей файла он проходит по списку («все части на месте?», «все ссылки между ними сходятся?», «число слайдов совпадает?»). Второй — набор эталонных презентаций: после любой правки движка я пересобираю их и сверяю результат. Если хоть один файл изменился неожиданно — значит, я что-то сломал, и лучше узнать это сейчас, а не от человека, которому уже отправил презентацию.

Что в итоге и что дальше

К концу этого этапа таблица уже собирала настоящие .pptx: с текстом, картинками, графиками, под нужную версию. Я радовался как ребёнок — ровно до того момента, как начал гонять её на реальных задачах. Тут-то и полезли грабли, которые на тестах вели себя прилично. Про самые смешные и поучительные — в третьей части: красный текст, который упорно был белым, одна картинка на всех слайдах сразу и переезд всего этого в веб.
Я пишу об AI-инструментах и автоматизации в Telegram-канале «Сундук AI» и МАКС канале «Сундук AI».

Источник: vc.ru

❌ Нет похожих статей с такими тегами

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники БИОЛОГ: НЕУМЕРЕННОЕ ИСПОЛЬЗОВАНИЕ ГАДЖЕТОВ НЕОБРАТИМО МЕНЯЕТ ЛИЧНОСТЬ РЕБЁНКА Новости робототехники Искусственный интеллект в БПЛА: преимущества и риски Новости робототехники Новая система искусственного интеллекта поможет машинам более детально понимать трехмерное пространство. Новости робототехники Ростех показал кобота с «умным» зрением Новости робототехники ДНК-роботы могли бы доставлять лекарства и выслеживать вирусы внутри вашего тела. Новости робототехники Человекоподобные роботы, играющие в футбол, забили важный гол в области робототехники, продемонстрировав высокую координацию движений. Новости робототехники Специалист по робототехнике утверждает, что безопасность человекоподобных роботов должна быть первостепенной задачей. Новости робототехники Приводимый в движение мышечными клетками, тончайший, как бумага, робот плывет по водному лабиринту. Архив рубрики ~Коротко из Telegram~ Поселил ИИ‑агента в чёлку макбука: он слушает мой день и… Архив рубрики ~Коротко из Telegram~ Немой парень впервые признался в любви СИЛОЙ МЫСЛИ — его………… Новости робототехники GM делает ставку на вычислительные технологии и искусственный интеллект, которые, по её мнению, помогут ей конкурировать с китайскими автопроизводителями. Архив рубрики ~Коротко из Telegram~ В легендарный Need for Speed: Underground 2 теперь можно поиграть… Архив рубрики ~Коротко из Telegram~ ИИ придумал пистолет, и его напечатали на 3D-принтере Однозарядный пистолет… Архив рубрики ~Коротко из Telegram~ В Швейцарии с помощью бактерий разработали печатный материал, похожий на бетон Новости робототехники БИОЛОГ: НЕУМЕРЕННОЕ ИСПОЛЬЗОВАНИЕ ГАДЖЕТОВ НЕОБРАТИМО МЕНЯЕТ ЛИЧНОСТЬ РЕБЁНКА Новости робототехники Искусственный интеллект в БПЛА: преимущества и риски Новости робототехники Новая система искусственного интеллекта поможет машинам более детально понимать трехмерное пространство. Новости робототехники Ростех показал кобота с «умным» зрением Новости робототехники ДНК-роботы могли бы доставлять лекарства и выслеживать вирусы внутри вашего тела. Новости робототехники Человекоподобные роботы, играющие в футбол, забили важный гол в области робототехники, продемонстрировав высокую координацию движений. Новости робототехники Специалист по робототехнике утверждает, что безопасность человекоподобных роботов должна быть первостепенной задачей. Новости робототехники Приводимый в движение мышечными клетками, тончайший, как бумага, робот плывет по водному лабиринту. Архив рубрики ~Коротко из Telegram~ Поселил ИИ‑агента в чёлку макбука: он слушает мой день и… Архив рубрики ~Коротко из Telegram~ Немой парень впервые признался в любви СИЛОЙ МЫСЛИ — его………… Новости робототехники GM делает ставку на вычислительные технологии и искусственный интеллект, которые, по её мнению, помогут ей конкурировать с китайскими автопроизводителями. Архив рубрики ~Коротко из Telegram~ В легендарный Need for Speed: Underground 2 теперь можно поиграть… Архив рубрики ~Коротко из Telegram~ ИИ придумал пистолет, и его напечатали на 3D-принтере Однозарядный пистолет… Архив рубрики ~Коротко из Telegram~ В Швейцарии с помощью бактерий разработали печатный материал, похожий на бетон

Оставить комментарий