Перейти к содержимому
pdftools.kz
Популярное

Почему тонкие линии пропадают

Линия пропадает в два хода, и первый не имеет отношения к JPEG. Волосяная линия толщиной 0,25 пункта при 186 DPI занимает 0,65 пикселя: целого пикселя ей не досталось, поэтому растеризатор закрашивает его частично и рисует бледно-серую полосу. Вторым ходом вступает JPEG, для которого светло-серое на белом — слабый перепад, и усредняет его с фоном. В просмотрщике та же линия видна на любом масштабе, потому что вектор рисуется заново каждый раз.

Локально в браузередо 1 ГБбез регистрации

Коротко о цифрах

Линия 0,25 пт при 186 DPI
0,65 пикселя — меньше одного
Линия 0,5 пт при 95 DPI
0,66 пикселя
Она же при 300 DPI
2,08 пикселя
Почему линия сереет
пиксель закрашивается пропорционально покрытию линией
Почему в просмотрщике видно
вектор перерисовывается на каждом масштабе, растр — нет

Две причины идут подряд

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

Дальше очередь кодирования. JPEG хорошо передаёт крупные перепады яркости и экономит на мелких, а бледно-серая нитка на белом фоне — как раз мелкий перепад. Достаточно одного прохода на низком качестве, чтобы она слилась с фоном полностью и уже не восстановилась ни при каком просмотре.

Толщина линии в пикселях

  • 0,25 пункта при 95 DPI — 0,33 пикселя: от линии остаётся лёгкий след.
  • 0,25 пункта при 186 DPI — 0,65 пикселя.
  • 0,5 пункта при 95 DPI — 0,66 пикселя: обычная рамка таблицы тоже не добирает до пикселя.
  • 0,5 пункта при 300 DPI — 2,08 пикселя: на максимуме шкалы линия наконец плотная.
  • 1 пункт при 186 DPI — 2,58 пикселя: линии такой толщины переживают сжатие без потерь заметности.

Что с этим делать

  1. Определите, чертёж перед вами или документ с таблицами: у первого линии несут весь смысл, у второго — только разметку.
  2. Для чертежей и схем растеризация не подходит в принципе: используйте оптимизацию, она не трогает вектор.
  3. Для таблиц поднимите качество до восьмидесяти процентов и выше, чтобы линия получила больше пикселя.
  4. Проверяйте по самой тонкой линии листа, а не по внешней рамке: рамки обычно толще и выживают всегда.
  5. Если линии нужны идеальными и вес не критичен, выгрузите страницу в PNG — потерь кодирования не будет вовсе.

Почему в просмотрщике всё было хорошо

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

Частые вопросы

Почему пропали не все линии таблицы, а часть?

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

Поможет ли максимальное качество вернуть волосяные линии?

Частично. На трёхстах точках линия в четверть пункта получает примерно один пиксель, то есть становится видимой, но не плотной. Для чертежей надёжнее вообще не растеризовать документ.

Линии есть на экране, но не печатаются. Это то же самое?

Нет, это другая история: принтер работает со своим разрешением и своими порогами. Если линия исчезла именно после сжатия, сравните исходник и результат в одном масштабе — разница будет видна сразу.

Можно ли сжать чертёж, не потеряв линии?

Только структурной оптимизацией, которая переставляет объекты внутри файла и не касается векторного содержимого. Любая растеризация чертежа превращает линии в пиксели и делает потери необратимыми.

Рядом

Частые задачи с этим инструментом