Как я могу сделать встроенное форматирование (жирным шрифтом и подчеркиванием) для PDF, созданного Prawnto в Rails?

Я генерирую PDF-файл, используя Prawn и плагин Prawnto в моем приложении rails.

Я создаю стандартную форму со стандартной текстовой областью и отправляю ее как тело файла PDF.

Однако мне нужно иметь возможность форматировать слова и предложения с помощью:

  • смелый
  • подчеркивание
  • может быть разных размеров

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

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

Как мне это сделать?

2 ответа

Решение

У нас могут быть похожие приложения...

Prawn может выполнять базовое встроенное форматирование на основе (простого) HTML - взгляните на пример text / inline_format.rb на github. На самом деле, взгляните на всю галерею примеров креветок, если у вас ее нет - это одна из лучших, которые я видел.

Чтобы получить нужный вам HTML, вы можете либо ввести HTML прямо в текстовое поле (немного некрасиво - может быть не очень хорошая идея, если кто-то, кроме вас, будет вводить текст), либо использовать что-то вроде Markdown для интерпретации более удобных для пользователя "кодов стиля" как делает Stackru. Я думаю, что BlueCloth - самая известная реализация ruby, но я никогда не использовал ее сам.

Жирный и подчеркнутый? Нет проблем. Размер шрифта может быть сложнее - я думаю, было бы сложно заставить BlueCloth испускать что-то вроде (устаревшего) тега , который они используют в примере с Prawn...

Надеюсь, что это помогает - ура!

В ответ на жирный текст...

В контроллере:

ответить | сделать | форматировать | format.pdf {render:layout => false} prawnto:filename => @current_project+".pdf",:prawn => {:font => 'Times-Roman'},:inline=>false
конец

Затем в файле pdf.prawn вы можете использовать:

в текстовом поле:

pdf.text_box "Редакции документа",: размер => 16,: стиль =>: полужирный,:at => [0.mm,10.mm],: ширина => 100.mm,: высота => 15.mm;

или в отдельной строке текста:

pdf.text "Содержание документа",:size => 16,:style =>:bold;

Как я понимаю - но не пробовал - чтобы подчеркнуть, вам нужно сделать:

: styles => [: полужирный,: подчеркивание];

ссылаться на эту ссылку для более

Это не особенность версии 0.8.4, а версии 0.10.2 - не уверен, как бы вы подчеркнули в 0.8.4. В настоящее время я не использую 0.10.2, поэтому не могу подтвердить, что это работает.

Исходя из того, что вы сказали, я думаю, что это то, что вы хотите для смелых:

pdf.text_box "# enj@yourtext.text}",:size => 16,:style =>: полужирный,:at => [0.mm,10.mm],:width => 100.mm,: высота => 15.мм;

Другие вопросы по тегам