Мне нужно добавить разрывы строк в тех позициях, в которых браузер естественным образом добавляет новую строку в абзац текста.
Например:
Это очень длинный текст \ n , который занимает несколько строк в абзаце.
Это абзац, который браузер решил разбить в позиции \ n
Мне нужно найти эту позицию и вставить
Кто-нибудь знает о каких-либо библиотеках или функциях JS, способных сделать это?
Единственное решение, которое я нашел до сих пор, - это удалить токены из абзаца и наблюдать свойство clientHeight, чтобы обнаружить изменение высоты элемента. У меня нет времени, чтобы закончить это, и я хотел бы найти что-то, что уже проверено.
Edit:
Мне нужно сделать это потому, что мне нужно точно конвертировать HTML в PDF. Acrobat отображает текст уже, чем браузер. Это приводит к тексту, который разбивается на разные позиции. Мне нужен идентичный рваный край и такое же количество строк в преобразованном PDF.
Edit:
@ dtsazza: Спасибо за продуманный ответ. Не исключено создание редактора макетов, который почти точно соответствует HTML, который я написал на 99%;)
Приложение, над которым я работаю, позволяет пользователю создавать каталог продуктов, перетаскивая «плитки». Плитки имеют фиксированную ширину, абсолютно расположенные элементы div, содержащие изображения и текст. Все элементы стилизованы, поэтому размер шрифта фиксирован. Мое решение по поиску \ n в абзаце приемлемо в 80% случаев, и когда он работает с заданным параграфом, полученный PDF настолько близок к экранной версии, что различия не имеют значения. Абзацы имеют одинаковую высоту (с точностью до пикселя), изображения заменяются версиями с высоким разрешением, а все растровые изображения заменяются на стороне сервера, созданной SVG.
Единственная небольшая разница между моим HTML и PDF заключается в том, что Acrobat отображает текст немного более узко, что приводит к тому, что длина строки немного короче.
Решение Диодея о добавлении диапазонов и нахождении их координат является очень хорошим и должно дать мне местоположение БР. Пожалуйста, помните, что пользователь никогда не увидит HTML-код со вставленными BR - они добавляются так, что преобразование PDF создает абзац точно такого же размера.
Многие люди считают, что это невозможно. У меня уже есть работающее приложение, которое создало чрезвычайно точное преобразование наших документов в HTML-> PDF - мне просто нужно лучшее решение для добавления BR, потому что мое решение иногда пропускает BR. Кстати, когда это работает, мои абзацы имеют ту же высоту, что и HTML-эквиваленты, что является результатом, к которому мы стремимся.
Если кто-то интересуется типом документа, который я конвертирую, вы можете проверить этот скриншот:
http://www.localsa.com.au/brochure/brochure.html
Редактировать: Большое спасибо Диодеусу - ваше предложение было точно.
Решение:
для моей ситуации было больше смысла заключать слова в промежутки вместо пробелов.
var text = chapterElement.innerHTML.replace (/ / g, ' ');
text = "" + text + ""; // завернуть первое и последнее слова.
Это оборачивает каждое слово в промежутке. Теперь я могу запросить документ, чтобы получить все слова, перебрать и сравнить y позицию. Когда у вас есть изменения, добавьте br.
Это работает безупречно и дает мне нужные мне результаты - Спасибо!