prawn-html 0.6.5 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +17 -0
- data/lib/prawn-html.rb +2 -4
- data/lib/prawn_html/html_parser.rb +13 -4
- data/lib/prawn_html/instance.rb +18 -0
- data/lib/prawn_html/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d7b30ab7d50313d9b5f16fd37bba84207725c8368ba3370a2ef037bdf871f27
|
4
|
+
data.tar.gz: 730c56224e0961d707db073b550f605e4dd4f39d6a902cbb2af5e9f4533e4785
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 790833d6338e59019751025c38a1b37ffa44ff583dd3f23771bc1015754cc1f047a6da9aa2d28c975191de8451ecc164d7dda412c2df15ca779c27b5aa1bc27a
|
7
|
+
data.tar.gz: 3ad2faf9178136a477fa4c0952410593219f85e6cacfbc88d1d504fbbe70388184ee62d3a4e84844eb0a8f225ba04845214d41beff68aa665bed12b03f563547
|
data/README.md
CHANGED
@@ -35,6 +35,23 @@ pdf.render_file('test.pdf')
|
|
35
35
|
|
36
36
|
To check some examples with the PDF output see [examples](examples/) folder.
|
37
37
|
|
38
|
+
Alternative form using _PrawnHtml::Instance_ to preserve the context:
|
39
|
+
|
40
|
+
```rb
|
41
|
+
require 'prawn-html'
|
42
|
+
pdf = Prawn::Document.new(page_size: 'A4')
|
43
|
+
phtml = PrawnHtml::Instance.new(pdf)
|
44
|
+
css = <<~CSS
|
45
|
+
h1 { color: green }
|
46
|
+
i { color: red }
|
47
|
+
CSS
|
48
|
+
phtml.append(css: css)
|
49
|
+
phtml.append(html: '<h1>Some <i>HTML</i> before</h1>')
|
50
|
+
pdf.text 'Some Prawn text'
|
51
|
+
phtml.append(html: '<h1>Some <i>HTML</i> after</h1>')
|
52
|
+
pdf.render_file('test.pdf')
|
53
|
+
```
|
54
|
+
|
38
55
|
## Supported tags & attributes
|
39
56
|
|
40
57
|
HTML tags (using MDN definitions):
|
data/lib/prawn-html.rb
CHANGED
@@ -156,10 +156,7 @@ module PrawnHtml
|
|
156
156
|
}.freeze
|
157
157
|
|
158
158
|
def append_html(pdf, html)
|
159
|
-
|
160
|
-
renderer = DocumentRenderer.new(pdf_wrapper)
|
161
|
-
html_parser = PrawnHtml::HtmlParser.new(renderer)
|
162
|
-
html_parser.process(html)
|
159
|
+
PrawnHtml::Instance.new(pdf).append(html: html)
|
163
160
|
end
|
164
161
|
|
165
162
|
module_function :append_html
|
@@ -179,3 +176,4 @@ require 'prawn_html/context'
|
|
179
176
|
require 'prawn_html/pdf_wrapper'
|
180
177
|
require 'prawn_html/document_renderer'
|
181
178
|
require 'prawn_html/html_parser'
|
179
|
+
require 'prawn_html/instance'
|
@@ -15,19 +15,28 @@ module PrawnHtml
|
|
15
15
|
@ignore = false
|
16
16
|
@ignore_content_tags = ignore_content_tags
|
17
17
|
@renderer = renderer
|
18
|
-
@
|
18
|
+
@raw_styles = {}
|
19
19
|
end
|
20
20
|
|
21
21
|
# Processes HTML and renders it
|
22
22
|
#
|
23
23
|
# @param html [String] The HTML content to process
|
24
24
|
def process(html)
|
25
|
+
@styles = {}
|
25
26
|
@processing = !html.include?('<body')
|
26
27
|
@document = Oga.parse_html(html)
|
28
|
+
process_styles # apply previously loaded styles
|
27
29
|
traverse_nodes(document.children)
|
28
30
|
renderer.flush
|
29
31
|
end
|
30
32
|
|
33
|
+
# Parses CSS styles
|
34
|
+
#
|
35
|
+
# @param text_styles [String] The CSS styles to evaluate
|
36
|
+
def parse_styles(text_styles)
|
37
|
+
@raw_styles = text_styles.scan(REGEXP_STYLES).to_h
|
38
|
+
end
|
39
|
+
|
31
40
|
private
|
32
41
|
|
33
42
|
attr_reader :document, :ignore, :processing, :renderer, :styles
|
@@ -59,9 +68,9 @@ module PrawnHtml
|
|
59
68
|
end
|
60
69
|
end
|
61
70
|
|
62
|
-
def process_styles(text_styles)
|
63
|
-
|
64
|
-
|
71
|
+
def process_styles(text_styles = nil)
|
72
|
+
parse_styles(text_styles) if text_styles
|
73
|
+
@raw_styles.each do |selector, rule|
|
65
74
|
document.css(selector).each do |node|
|
66
75
|
styles[node] = rule
|
67
76
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PrawnHtml
|
4
|
+
class Instance
|
5
|
+
attr_reader :html_parser, :pdf_wrapper, :renderer
|
6
|
+
|
7
|
+
def initialize(pdf)
|
8
|
+
@pdf_wrapper = PrawnHtml::PdfWrapper.new(pdf)
|
9
|
+
@renderer = PrawnHtml::DocumentRenderer.new(@pdf_wrapper)
|
10
|
+
@html_parser = PrawnHtml::HtmlParser.new(@renderer)
|
11
|
+
end
|
12
|
+
|
13
|
+
def append(css: nil, html: nil)
|
14
|
+
html_parser.parse_styles(css) if css
|
15
|
+
html_parser.process(html) if html
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/prawn_html/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prawn-html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattia Roccoberton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oga
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- lib/prawn_html/context.rb
|
54
54
|
- lib/prawn_html/document_renderer.rb
|
55
55
|
- lib/prawn_html/html_parser.rb
|
56
|
+
- lib/prawn_html/instance.rb
|
56
57
|
- lib/prawn_html/pdf_wrapper.rb
|
57
58
|
- lib/prawn_html/tag.rb
|
58
59
|
- lib/prawn_html/tags/a.rb
|