Все пять документов открыты по очереди на работающем сервисе, в браузере, на панели «После выравнивания». По каждой странице сверено, ложатся ли линии сетки на края тех же прямоугольников, по которым режется текст, и не осталось ли ячеек за пределами сетки. Отдельно проверено, что клик по ячейке и разметка не сломались.
| Пример | Страниц | Линий сетки | Ячеек | Краёв ячеек с линией | Линий легло на печатную линейку | Сдвиг при сжатии окна, точек |
|---|---|---|---|---|---|---|
| Пример 1 | 2 | 102 | 654 | 100.0% | 87 из 102 (85%) | 0.02 |
| Пример 2 | 2 | 56 | 132 | 100.0% | 43 из 51 (84%) | 0.01 |
| Пример 3 | 1 | 29 | 48 | 100.0% | 20 из 27 (74%) | 0.01 |
| Пример 4 | 1 | 53 | 118 | 100.0% | 45 из 53 (85%) | 0.02 |
| Пример 5 | 2 | 86 | 362 | 100.0% | 73 из 86 (85%) | 0.02 |
«Краёв ячеек с линией» — доля из четырёх краёв каждой ячейки (слева, справа, сверху, снизу), рядом с которыми нашлась линия сетки; допуск — две точки экрана. «Сдвиг при сжатии окна» — насколько линии уехали относительно картинки, когда окно сузили с широкого до узкого.
Сетка работает так, как просили. На всех пяти примерах линии рисуются поверх картинки на панели «После выравнивания», полупрозрачные — скан сквозь них читается, мышь они не перехватывают. При сжатии окна с 673 до 484 точек сетка уехала относительно картинки не больше чем на 0,02 точки, то есть осталась приклеенной к скану. На вкладке «Как есть» линий нет — они посчитаны на выровненной странице, и на исходное фото их не переносят.
Совпадение с самим сканом. Всего на пяти примерах нарисовано 319 линий. 268 из них (84%) идут по настоящей печатной линейке бланка, и 249 из этих 268 (93%) — с зазором не больше 2 точек при ширине страницы 1400 точек; типичный зазор — одна точка. Оставшиеся 51 линия проведены там, где на бланке линейки нет вовсе: это границы столбцов, которые разбор берёт по расположению текста (поля подписей, незалинованные блоки). Это не промах отрисовки — сетка честно показывает те границы, по которым режется текст.
Что не сошлось. Расхождения, которые видно глазами, все одного рода: сетки нет там, где разбор не считает область таблицей.
Ни одно из этих расхождений не лечится в самой сетке: она рисуется ровно по тем прямоугольникам, по которым движок режет текст на ячейки. Чтобы шапки и пропущенные столбцы попали под сетку, надо менять разбор таблиц, а его по условию не трогаем.
Что не сломалось. Клик по ячейке на скане по-прежнему подсвечивает и рамку, и значение в таблице справа — проверено на всех пяти примерах, сетка при этом остаётся на месте. Перетаскивания картинки мышью нет: протяжка на 130 точек вправо и 100 вниз сдвинула изображение на 0 точек. Ошибок в консоли браузера ни на одном примере не было.
Панель «После выравнивания» выбрана: да. Страниц: 2.
| Стр. | Линий сетки: верт. / гор. | Ячеек | Краёв ячеек с линией | Линий на печатной линейке | Из них с зазором до 2 точек | Линий без линейки на скане |
|---|---|---|---|---|---|---|
| 1 | 27 / 35 | 293 | 1172 из 1172 | 58 из 62 | 53 | 4 |
| 2 | 20 / 20 | 361 | 1444 из 1444 | 29 из 40 | 28 | 11 |
Сетка легла на всю товарную таблицу целиком — вместе с высокой шапкой и всеми 19 столбцами: розовые линии идут ровно по печатным линейкам бланка. Верхний блок (продавец, покупатель, реквизиты) тоже накрыт. Текст сквозь линии читается. Расхождений, которые видно глазом, нет.



Панель «После выравнивания» выбрана: да. Страниц: 2.
| Стр. | Линий сетки: верт. / гор. | Ячеек | Краёв ячеек с линией | Линий на печатной линейке | Из них с зазором до 2 точек | Линий без линейки на скане |
|---|---|---|---|---|---|---|
| 1 | 18 / 19 | 88 | 352 из 352 | 31 из 34 | 29 | 3 |
| 2 | 14 / 5 | 44 | 176 из 176 | 12 из 17 | 12 | 5 |
Скан помятый и завален — сетка идёт вместе с картинкой, не отрывается от неё. Верхний блок с реквизитами накрыт полностью. В товарной таблице сеткой охвачены строка нумерации столбцов и четыре строки с товарами. Не охвачены: высокая шапка таблицы и три последних столбца (10, 10а, 11) — разбор не включил их в таблицу, поэтому и линий там нет. В нижней, выцветшей половине листа есть рамки текста, но сетки нет — таблицы там разбор не нашёл.



Панель «После выравнивания» выбрана: да. Страниц: 1.
| Стр. | Линий сетки: верт. / гор. | Ячеек | Краёв ячеек с линией | Линий на печатной линейке | Из них с зазором до 2 точек | Линий без линейки на скане |
|---|---|---|---|---|---|---|
| 1 | 9 / 20 | 48 | 192 из 192 | 20 из 27 | 18 | 7 |
Сеткой накрыты верхний блок с реквизитами и нижний блок с подписями. Главная товарная таблица сеткой не охвачена: разбор сложил её в блок из 3 столбцов вместо 19, поэтому вертикальных линий на всю страницу всего девять. В блоке подписей часть линий проходит там, где на бланке линейки не нарисовано — границы там взяты по расположению текста.



Панель «После выравнивания» выбрана: да. Страниц: 1.
| Стр. | Линий сетки: верт. / гор. | Ячеек | Краёв ячеек с линией | Линий на печатной линейке | Из них с зазором до 2 точек | Линий без линейки на скане |
|---|---|---|---|---|---|---|
| 1 | 24 / 29 | 118 | 472 из 472 | 45 из 53 | 39 | 8 |
Верхний блок и три строки товаров накрыты, линии идут по печатным линейкам. Не охвачена высокая шапка товарной таблицы — она осталась отдельными текстовыми блоками, а не частью таблицы. Слева видно, что сетка верхнего блока заходит на поле «Статус» — это край того же блока, а не промах.



Панель «После выравнивания» выбрана: да. Страниц: 2.
| Стр. | Линий сетки: верт. / гор. | Ячеек | Краёв ячеек с линией | Линий на печатной линейке | Из них с зазором до 2 точек | Линий без линейки на скане |
|---|---|---|---|---|---|---|
| 1 | 20 / 31 | 308 | 1232 из 1232 | 49 из 51 | 47 | 2 |
| 2 | 20 / 15 | 54 | 216 из 216 | 24 из 35 | 23 | 11 |
Самый чистый случай: товарная таблица на 18 строк и 16 столбцов накрыта целиком, линии совпали с линейками бланка почти везде. На второй странице сеткой накрыты обе таблицы. Расхождений, заметных глазом, нет.


