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

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

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

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

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 08 февраля 2011

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

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

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

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

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

2 голосов
/ 09 февраля 2011

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

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

response_to do | форматировать | 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 "#ndom@yourtext.text}",: size => 16,: style =>: жирный,: at => [0.mm, 10.mm],: width => 100.mm ,: высота => 15.мм;

...