Как заставить длинный URL/ текст для переноса в ячейке таблицы при создании PDF в рельсах?
Я использую Princely ( https://github.com/mbleigh/princely) для создания PDF в рельсах. У меня длинный URL в одной ячейке таблицы. Это увеличит запас при создании PDF. В html "перерыв слова: перерыв"; работает хорошо. Но это правило "разбить слово: разбить все"; не работает в PDF. У любого тела есть идея обернуть длинный текст при создании PDF?
2 ответа
Так как princely конвертирует ERB в PDF, я считаю, что мы можем использовать функцию усечения рельсов, чтобы сделать ссылку короче.
= link_to truncate("The anchor you want to place", :length => 5), 'http://yoururl'
Я столкнулся с похожими проблемами при печати. Помимо технической проблемы, вам нужно задать себе несколько вопросов о дизайне: если бы вы создавали веб-страницу, пользователь щелкнул бы ссылку. Но если вы создаете PDF, я предполагаю, что цель состоит в том, чтобы напечатать его. В этом случае кто-то должен ввести этот длинный URL.
- Насколько вероятно, что пользователи будут вводить длинный URL-адрес? Если это имеет смысл только в контексте живой веб-страницы, возможно, вы хотите удалить этот контент из PDF.
- Если им действительно нужно посетить пункт назначения, но им не нужно видеть точный URL-адрес, то имеет смысл сократить URL-адрес.
Если вы хотите сократить URL-адрес, вы можете реализовать службу перенаправления URL-адресов в своем приложении Rails. Мне нравится следующий фрагмент кода для генерации короткого URL-кода, потому что все они дружественны к клавиатуре (они не содержат сбивающих с толку символов и не требуют большого сдвига или переключения клавиш):
def generate_short_murl
a = [('a'..'k'),('m'..'z')].map{|i| i.to_a}.flatten
n = [('2'..'9')].map{|i| i.to_a}.flatten
(0...4).map{ a[rand(a.length)] }.join + (0...3).map{ n[rand(n.length)] }.join
end