fst-print-layout

Настройка печатных бланков и Excel Otgruzka без обрезки строк и дыр в нумерации. Use when print preview, PDF, Excel export, A4, page-break, overflow hidden, «бланк», «форма», «переход страниц», список

SKILL.md

GitHub

Раскладка бланков Otgruzka

Канон кода: React-лист + src/styles/print.css + fit после paint. Не Puppeteer. Читать вместе с print-forms. Этот скил — про переходы страниц и Excel.

Инцидент (не повторять)

Печать списка сотрудников, 2026-08-14: на лист 1 с логотипом положили 22 строки. overflow: hidden обрезал №18–22. Лист 2 начинался с №23. В превью — серая щель и дыра в номерах.

Правило: если в превью последний видимый № на листе N, а следующий лист начинается с N+k (k>1) — это баг, люди потеряны.

Печать (A4)

  1. Лист = точный A4 (297×210 альбом или 210×297 книжка), поля внутри padding, @page { margin: 0 }.
  2. Первый лист с логотипом/титулом вмещает меньше строк, чем продолжение с одной строкой-кикером.
  3. После paint подогнать высоту строк: rowH = min(max, available / count). Не Math.max(minRow, …), если minRow * count больше available — тогда hidden режет хвост.
  4. overflow: hidden на листе можно только если все tbody tr целиком внутри бокса. Иначе уменьшить count, не прятать людей.
  5. Нумерация сквозная: concat страниц = исходный список без пропусков.
  6. Длинный текст: nowrap + ellipsis, не рост строки на 2–3 линии (ломает вместимость).
  7. Превью = печать (как журнал явки). Не обнулять padding в @media print, если @page margin: 0.
  8. Модалка печати — ephemeral. Fit — после requestAnimationFrame ×2, снова перед Ctrl+P / PDF.

Ориентир вместимости альбом + логотип FiberCell: 16 строк на первый лист, больше — только с короткой шапкой.

Excel

Как бланк, не голый aoa_to_sheet:

  • шапка (орг, заголовок, дата, счётчик);
  • колонка №;
  • autoFilter на строке заголовков;
  • pageSetup: A4, landscape, fitToWidth: 1, fitToHeight: 0;
  • printTitlesRow = строка фильтров;
  • те же колонки/люди, что на печати (без ЗП/банка в офисном списке).

Образец стиля: src/lib/export/payrollBankTransferExcel.ts. Офис: src/lib/office/staffListExcel.ts.

Чеклист перед сдачей

  • В превью нет серой щели с «пропавшими» номерами между листами
  • Последний № листа 1 + 1 = первый № листа 2
  • Хвост не обрезан overflow: hidden
  • Excel: стрелки фильтра, лист не уезжает за A4 по ширине
  • i18n RU+KA