eml_to_pdf_ext 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,24 @@
1
+ module EmlToPdf
2
+ class ExtractionStepList
3
+ def initialize(steps)
4
+ @steps = steps
5
+ end
6
+
7
+ def next
8
+ self.class.new(@steps.map(&:next))
9
+ end
10
+
11
+ def finished?
12
+ @steps.all?(&:finished?)
13
+ end
14
+
15
+ def to_html
16
+ @steps.flatten.map(&:to_html).join
17
+ end
18
+
19
+ private
20
+ def multipart_alternative?(part)
21
+ part.mime_type == MIME_TYPES[:multipart_alternative]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'mail'
2
+
3
+ module EmlToPdf
4
+ class FileEmailProvider
5
+ def initialize(input_path)
6
+ @email = Mail.read(input_path)
7
+ end
8
+
9
+ attr_reader :email
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'mail'
2
+
3
+ module EmlToPdf
4
+ class MemoryEmailProvider
5
+ def initialize(content)
6
+ @email = Mail.new(content)
7
+ end
8
+
9
+ attr_reader :email
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+ require "filesize"
2
+ require "cgi"
3
+ require "ostruct"
4
+
5
+ module EmlToPdf
6
+ class MetadataContext < OpenStruct
7
+ def config
8
+ EmlToPdf.configuration
9
+ end
10
+
11
+ def format_attachment_size(attachment)
12
+ Filesize.from("#{attachment.body.decoded.size} B").pretty
13
+ end
14
+
15
+ def format_date(date)
16
+ config.format_date(date)
17
+ end
18
+
19
+ def html_escape(str)
20
+ CGI.escapeHTML(str)
21
+ end
22
+
23
+ def get_binding
24
+ binding
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,31 @@
1
+ <meta charset="UTF-8">
2
+ <div class="email-metadata">
3
+ <table>
4
+ <tr>
5
+ <td><strong><%= config.from_label %></strong></td>
6
+ <td><%= html_escape(from) %></td>
7
+ </tr>
8
+ <tr>
9
+ <td><strong><%= config.to_label %></strong></td>
10
+ <td><%= html_escape(to) %></td>
11
+ </tr>
12
+ <tr>
13
+ <td><strong><%= config.cc_label %></strong></td>
14
+ <td><%= html_escape(cc) %></td>
15
+ </tr>
16
+ <tr>
17
+ <td><strong><%= config.date_label %></strong></td>
18
+ <td><%= format_date(date) if date %></td>
19
+ </tr>
20
+ </table>
21
+ <h3><%= subject %></h3>
22
+ <hr>
23
+ <ul class="email-attachments">
24
+ <% attachments.each do |att| %>
25
+ <li class="attachement">
26
+ <span class="filename"><%= att.filename %></span>
27
+ <span class="file-size"><%= format_attachment_size(att) %></span>
28
+ </li>
29
+ <% end %>
30
+ </ul>
31
+ </div>
@@ -0,0 +1,56 @@
1
+ <style type="text/css">
2
+ .email-metadata {
3
+ width: 100%;
4
+ background: #fff;
5
+ font-size: 12pt;
6
+ font-family: Arial;
7
+ padding-bottom: 20px;
8
+ }
9
+ .email-metadata table {
10
+ width: 100%;
11
+ }
12
+ .email-attachments {
13
+ padding: 0;
14
+ margin: 0;
15
+ }
16
+ .email-attachments:before,
17
+ .email-attachments:after {
18
+ content: "";
19
+ display: table;
20
+ }
21
+ .email-attachments:after {
22
+ clear: both;
23
+ }
24
+ .attachement {
25
+ padding: 5px 10px;
26
+ background-color: #eaeaea;
27
+ border: 1px solid #ccc;
28
+ display: table;
29
+ float: left;
30
+ margin-right: 10px;
31
+ margin-bottom: 10px;
32
+ }
33
+
34
+ .filename {
35
+ display: table-cell;
36
+ width: 75%;
37
+ }
38
+
39
+ .file-size {
40
+ display: table-cell;
41
+ width: 25%;
42
+ font-size: 80%;
43
+ color: #aaa;
44
+ padding-left: 5px;
45
+ text-align: right;
46
+ }
47
+
48
+ pre {
49
+ white-space: pre-wrap;
50
+ }
51
+
52
+ body {
53
+ margin: 0;
54
+ padding: 0;
55
+ }
56
+ </style>
@@ -0,0 +1,3 @@
1
+ module EmlToPdf
2
+ VERSION = '0.5.2'
3
+ end
@@ -0,0 +1,17 @@
1
+ module EmlToPdf
2
+ class Wkhtmltopdf
3
+ class ConversionError < StandardError; end
4
+
5
+ def self.convert(input, output_path)
6
+ IO.popen("wkhtmltopdf --encoding utf-8 --footer-center [page] --footer-spacing 2.5 - #{output_path} 2>&1", "r+") do |pipe|
7
+ pipe.puts(input)
8
+ pipe.close_write
9
+ output = pipe.readlines.join
10
+ pipe.close
11
+ unless $?.success?
12
+ raise ConversionError, output
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
data/tmp/.gitkeep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eml_to_pdf_ext
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
5
+ platform: ruby
6
+ authors:
7
+ - Yves Siegrist
8
+ - Hubert Pomorski
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2017-01-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.10'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.10'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '11.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '11.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: minitest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '5.9'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '5.9'
56
+ - !ruby/object:Gem::Dependency
57
+ name: filesize
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.1.1
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.1.1
70
+ - !ruby/object:Gem::Dependency
71
+ name: mail
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.5'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 2.5.4
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '2.5'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 2.5.4
90
+ - !ruby/object:Gem::Dependency
91
+ name: nokogiri
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.5.2
97
+ type: :runtime
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 1.5.2
104
+ description: This gem uses wkhtmltopdf to convert an eml to a pdf. (eml -> html ->
105
+ pdf)
106
+ email:
107
+ - Elektron1c97@gmail.com
108
+ - hubert.pomorski@sabre.com
109
+ executables:
110
+ - eml_to_pdf
111
+ extensions: []
112
+ extra_rdoc_files: []
113
+ files:
114
+ - ".codeclimate.yml"
115
+ - ".gitignore"
116
+ - ".rubocop.yml"
117
+ - ".ruby-version"
118
+ - ".travis.yml"
119
+ - CODE_OF_CONDUCT.md
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - README.md
123
+ - Rakefile
124
+ - bin/console
125
+ - bin/setup
126
+ - eml_to_pdf.gemspec
127
+ - exe/eml_to_pdf
128
+ - lib/eml_to_pdf.rb
129
+ - lib/eml_to_pdf/configuration.rb
130
+ - lib/eml_to_pdf/converter.rb
131
+ - lib/eml_to_pdf/email.rb
132
+ - lib/eml_to_pdf/empty_part.rb
133
+ - lib/eml_to_pdf/extraction_step.rb
134
+ - lib/eml_to_pdf/extraction_step_list.rb
135
+ - lib/eml_to_pdf/file_email_provider.rb
136
+ - lib/eml_to_pdf/memory_email_provider.rb
137
+ - lib/eml_to_pdf/metadata_context.rb
138
+ - lib/eml_to_pdf/templates/heading.html.erb
139
+ - lib/eml_to_pdf/templates/style.html
140
+ - lib/eml_to_pdf/version.rb
141
+ - lib/eml_to_pdf/wkhtmltopdf.rb
142
+ - tmp/.gitkeep
143
+ homepage: https://github.com/SwordPL/eml_to_pdf
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 2.1.5
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.4.3
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: This gem allows you to convert an eml (email) into a pdf.
167
+ test_files: []