2013-09-27 1 views
0

Ранее Prawn гем позволил создать таблицу своего HTML представления (имея строку HTML таблицы в качестве входного аргумента как <table class="abc"> .... </table>). Теперь я не нашел это средство в руководстве.Создать таблицу в Prawn его HTML представление

Это возможно сейчас? Если нет, есть ли другой вариант?

ответ

-2

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

Например, если вы определяете следующие шаблоны, он будет рисовать таблицу с тремя столбцами с шириной x, y и z.

data = [ ["Column 1", "Column 2", "Column 3"] ] 
table(data, :column_widths => [x,y,z], :cell_style => { :inline_format => true }) 
+0

Где находится таблица html (например, '

...
')? –

+0

Не думаю, что

...
тег больше не поддерживается. Это наоборот, чтобы достичь того же результата (о котором вы также попросили.) – royalGhost

+0

, но у меня есть это как строка ввода, и мне нужно вставить эту таблицу в pdf-документ, как мне с этим справиться? –

0

TL; DR: если ваш потребительной случай 1) формирование как HTML и PDF данные (например, онлайн-счетов-фактур и т.д.), и 2) убедившись, что оба выглядят одинаково, то креветка на самом деле не лучший (что является тем же предложением в Readme Prawn).

В вашем случае вы можете проанализировать HTML-код с помощью Nokogiri или Upton и извлечь данные из таблицы HTML, а затем использовать его для создания представления PDF через креветку. Стили HTML не могут напрямую транслироваться в те, что используются Prawn, и поэтому даже с большим количеством кодовых конфликтов вы можете не добиться согласованности стилизации, что, я полагаю, из комментариев по ответу royalGhost является результатом вы хотите. Кроме того, простое решение для анализа Nokogiri не будет работать, если ваша таблица HTML вложенна, а код разбора не подходит для этого. Например, рассмотрим следующее:

<table> 
    <tr> 
    <td>First Column, First Row</td> 
    <td>Second Column, First Row</td> 
    </tr> 
    <tr> 
    <table> 
     <tr> 
     <td>First Column, Second Row</td> 
     <td>Second Column, Second Row</td> 
     <td>Third Column, Second Row</td> 
     </tr> 
    </table> 
    </tr> 
</table> 

Затем в разборе фрагменте Руби, вы должны убедиться, что внутренняя <table>...</table> разбирается в Prawn::Table объекта, а не ряд Prawn::Table::Cell объектов.

Любой вариант wkhtmltopdf, такой как WickedPDF или PDFKit, предлагает гораздо более чистый способ достижения решения для преобразования HTML в PDF.

У вас есть два варианта:

  1. Ditch Креветки целиком и предпочитают решение выше.
  2. Используйте креветку, извлекая данные из HTML через Nokogiri/Upton и создавайте PDF-файл, и не беспокойтесь о том, что стиль такой же, как в представлении HTML.
Смежные вопросы