как заставить длинный URL/текст переноситься в ячейку таблицы при создании PDF в рельсах?

Я использую Princely(https://github.com/mbleigh/princely) для создания PDF в рельсах. У меня длинный URL в одной ячейке таблицы. Это расширит поле, когда я сгенерирую PDF. В html "разрыв слова: разбить все"; работает хорошо. Но это правило "слово-брейк: брейк-все"; не работает в PDF. У кого-нибудь есть идея обернуть длинный текст при создании PDF?


person user3893793    schedule 31.07.2014    source источник


Ответы (2)


Поскольку Princely конвертирует ERB в PDF, я считаю, что мы можем использовать вспомогательную функцию усечения рельсов, чтобы сделать ссылку короче.

= link_to truncate("The anchor you want to place", :length => 5), 'http://yoururl'
person coderhs    schedule 31.07.2014

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

  1. Насколько вероятно, что пользователи будут вводить длинный URL-адрес? Если это имеет смысл только в контексте активной веб-страницы, возможно, вы захотите удалить этот контент из PDF.
  2. Если им действительно нужно посетить место назначения, но им не нужно видеть точный 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
person William Hertling    schedule 25.08.2014