PDF Точная проверка букв местоположения при различных подъемах и спускахC#

Место общения программистов C#
Ответить
Anonymous
 PDF Точная проверка букв местоположения при различных подъемах и спусках

Сообщение Anonymous »

Мой вопрос: я пытаюсь проверить точность букв x, y, чтобы определить, не приближаются ли они слишком близко к границе, которую я нарисовал в PDF-файле.
Приведенный ниже код хорош для большинства случаев, но в некоторых шрифтах подъемы и спуски расположены слишком близко к верхней и нижней линиям.
Картинка описания Ascent and Descent:
Изображение

Вы можете увидеть это здесь. Вот как это выглядит при увеличении 200%. Даже при этом вы можете видеть, что он выглядит очень близко.
Выглядит почти касающимся линии:
Изображение

Только при увеличении масштаба 1600% вы можете увидеть достаточный зазор. Потому что эти PDF-файлы будут распечатаны и могут увеличиваться или уменьшаться.
Но при масштабировании достаточно места:
Изображение

Я хочу проверить и настроить в соответствии с этим. Мне нужно быть настолько точным, потому что эти буквы, которые будут использоваться в счетах-фактурах, могут иметь шрифты большего/меньшего размера, изменение высоты строк и все такое, что испортит их внешний вид.
В настоящее время для этого я использую приведенный ниже код:
public bool FitsToTheLine(PdfRectangle textLineRectangle, PdfRectangle overAllRectangle, double lineHeight)
{

double lineBottom = textLineRectangle.TopLeft.Y - lineHeight;
double lineTop = textLineRectangle.TopLeft.Y;
double lineLeft = textLineRectangle.BottomLeft.X;
double lineRight = textLineRectangle.BottomRight.X;

double bottomYLimit = overAllRectangle.BottomLeft.Y;
double topYLimit = overAllRectangle.TopLeft.Y;
double xStartLimit = overAllRectangle.BottomLeft.X;
double xFinishLimit = overAllRectangle.BottomRight.X;

bool tooLow = lineBottom < bottomYLimit;
bool tooHigh = lineTop > topYLimit;
bool tooLeft = lineLeft < xStartLimit;
bool tooRight = lineRight > xFinishLimit;

if (tooLow || tooHigh || tooLeft || tooRight)
{
return false;
}

return true;
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... d-descents
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»