Как определить «поля» на картинке и заполнить их текстом?

#php #image-processing #text-processing

#php #обработка изображений #обработка текста

Вопрос:

У меня есть предопределенные образцы печати, предоставленные страховой компанией. Они не принимают отпечатки в любом другом формате. Я должен написать приложение, которое должно иметь возможность заполнять эти формы / образцы.

Я решил отсканировать образцы и заполнить их некоторой библиотекой изображений, и вот моя проблема 😉

Данные для заполнения форм часто слишком «велики», чтобы поместиться в «поле для заполнения». Я хотел бы автоматически определять размер шрифта, используемого для размещения данных в поле, или даже разбивать данные на две или более строк.

Мои вопросы:

  • Есть ли какая-либо библиотека изображений, которая сможет это сделать, или я должен написать всю эту логику с нуля?
  • Может быть, я должен решить эту проблему другим способом?

Комментарии:

1. Вы думали о преобразовании в PDF и использовании полей шаблона? Существует множество драйверов, которые могут записывать PDF-файлы с заполнителями, которые могут форматироваться в зависимости от размера заполнителя.

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

3. @canni, Adobe Acrobat хорошо подходит для такого рода работ. Вам повезет гораздо больше с этим методом, чем взламывать что-то вместе с PHP.

4. @Brad мои данные поступают из приложения PHP, и смешивать приложение php с acrobat, я думаю, не лучшее решение

5. koivi.com/fill-pdf-form-fields

Ответ №1:

Простой ответ: да, вы должны написать эту логику с нуля. Я понимаю ваше нежелание иметь дело с PDF. Большинство библиотек, которые выполняют любой вид рендеринга текста, включая библиотеку PHP GD, использующую FreeType, предоставят метод определения размера ограничивающей рамки текстовой строки перед ее рендерингом. В PHP это imageftbbox http://www.php.net/manual/en/function.imageftbbox.php. Вы можете использовать это, чтобы, по крайней мере, угадать и проверить свой путь к правильному размеру шрифта для данной области.