Module: SilkLayout

Defined in:
lib/silk_layout.rb,
lib/silk_layout/version.rb,
lib/silk_layout/css/rule.rb,
lib/silk_layout/css/color.rb,
lib/silk_layout/html/node.rb,
lib/silk_layout/css/parser.rb,
lib/silk_layout/css/values.rb,
lib/silk_layout/layout/box.rb,
lib/silk_layout/css/cascade.rb,
lib/silk_layout/html/parser.rb,
lib/silk_layout/layout/root.rb,
lib/silk_layout/css/selector.rb,
lib/silk_layout/css/page_rule.rb,
lib/silk_layout/layout/engine.rb,
lib/silk_layout/layout/inline.rb,
lib/silk_layout/css/properties.rb,
lib/silk_layout/layout/context.rb,
lib/silk_layout/render/painter.rb,
lib/silk_layout/resource/image.rb,
lib/silk_layout/css/computed_style.rb,
lib/silk_layout/layout/box_builder.rb,
lib/silk_layout/layout/flex_layout.rb,
lib/silk_layout/layout/block_layout.rb,
lib/silk_layout/render/font_library.rb,
lib/silk_layout/render/pdf_renderer.rb,
lib/silk_layout/layout/inline_formatter.rb,
lib/silk_layout/layout/formatting_builder.rb

Defined Under Namespace

Modules: CSS, HTML, Layout, Render, Resource

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.render_document(html_document, out, url: nil, viewport_width: nil, page_size: nil, page_width: nil, page_height: nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/silk_layout.rb', line 55

def self.render_document(
  html_document,
  out,
  url: nil,
  viewport_width: nil,
  page_size: nil,
  page_width: nil,
  page_height: nil
)
  dom, stylesheets = SilkLayout::HTML::Parser.parse_document(html_document, url: url)
  stylesheet = SilkLayout::CSS::Parser.parse_stylesheets(stylesheets, media: :print)
  css_page_size = SilkLayout::CSS::PageRule.resolve_page_size(stylesheet.page_rules)
  resolved_page_size = resolve_page_size(page_size || css_page_size, page_width, page_height)

  box_tree = SilkLayout::Layout::Engine.layout(
    dom,
    stylesheet.rules,
    viewport_width: viewport_width,
    page_size: resolved_page_size
  )

  SilkLayout::Render::PdfRenderer.render(
    box_tree,
    out,
    page_size: resolved_page_size
  )
end