Ввод длинного текста от пользователя и создание PDF-файла

StackOverflow https://stackoverflow.com/questions/1646915

Вопрос

Я создал веб-приложение, которое можно рассматривать как слишком сложную форму приложения.Существует множество текстовых областей с заданным ограничением символов.После отправки формы происходят разные вещи, и одна из них — генерация PDF.

Текст запрашивается из БД и вставляется в шаблон PDF, созданный в iReports.Это работает нормально, но основная проблема — это переполнение текста.

Максимальное количество символов устанавливается на основе «среднего» текста.Но иногда люди предпочитают писать ЗАГЛАВНЫМИ БУКВАМИ или добавлять большое количество переводов строк для форматирования текста.Затем это приводит к тому, что пользовательский текст переполняет пространство, указанное в PDF.К сожалению, PDF-документ должен выглядеть как настоящая форма заявления, поэтому я не могу предоставить неограниченное пространство.

Какие подходы вы использовали для решения этой проблемы?

  • Очистить/ограничить ввод данных пользователем?
  • Рассчитать необходимое пространство для текста на основе показателей шрифта?
  • Обеспечить предварительный просмотр PDF-файла?(жаль, что пользователям не разрешено изменять свои данные после отправки...)
Это было полезно?

Решение

В идеале рассчитывать требования на основе показателей.Я не знаю, как iReports обрабатывает текст, но iText все раскладывает сам, вы просто представляете данные в виде потокового документа, поэтому мы не беспокоимся о переполнении текста.

Однако iReport может не поддерживать это, или вам может потребоваться, чтобы макет PDF соответствовал определенным границам.Я бы попытался очистить ввод (т.е.:если все заглавные, строчные/регистр предложений/правильный регистр), удалите лишние пробелы.Если очистку ввода невозможно выполнить надежно или люди все еще справляются с этим, я бы также ограничил ее.

В крайнем случае, я бы предоставил PDF-файл на авторизацию пользователя.На самом деле пользователям не следует давать больше работы, и они все равно не собираются ее делать.

Другие советы

Все предложенные вами решения вашей проблемы хороши.Вероятно, самый важный вопрос, на который нужно ответить, — как должен выглядеть ваш PDF-файл, если данные, отображаемые в поле, не помещаются?Нужен ли вам когда-нибудь «полный ответ» на что-нибудь еще?Когда вы узнаете ответ на эти вопросы, ваши возможности уменьшатся.

Например, если поле должно быть ограничено 1/2 страницы за страницу, а пользователи иногда вводят более 1/2 страницы текста, вы можете либо 1) ограничить ввод пользователя - при отправке Рассчитайте размер (используя шрифты. сказано) и отвергайте подчинение, пока не будет исправлено.Это предполагает, что вы можете законно заставить пользователя сократить ввод данных.2) принять ввод пользователя и выполнить усечение при отображении этого отчета.Некоторые системы используют «...» для обозначения того, что данные были усечены, и могут предоставлять гиперссылку (даже внутри PDF-файла) для получения дополнительной информации.

Предоставление предварительного просмотра будет работать очень хорошо, но только в том случае, если пользователи умеют проверять и исправлять ошибки, а ваша система способна справиться с дополнительной нагрузкой, которую это создаст.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top