libis-format 1.2.5 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libis/format/tool/msg_to_pdf.rb +34 -17
- data/lib/libis/format/version.rb +1 -1
- data/libis-format.gemspec +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1b5fdec2f726d83572f66f78b361b8500247bcf5bdcce56e633998b88758bc4
|
4
|
+
data.tar.gz: 0b09d4cc45338b9c1060c89d80f94ad171e8d2bc43da17b20cd2357521ef78f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ad4a140bfa6bedf2d7b915ec1a51b23fd9b4efdacf468e1cae1505a54c72b0733c6ee3d20981347da3f9fae8a8656416a953754bdc893decb8021f40a58b499
|
7
|
+
data.tar.gz: '0854af4151b126b6d2cb3d8fdd04c2186dcd5dac294b9a800db0256ed0955c3f1d86d54853ea39fbb295fdf5f71d7a016e6e49e71988e3c7f7c595f5a1c9a33e'
|
@@ -5,7 +5,10 @@ require 'rfc_2047'
|
|
5
5
|
require 'cgi'
|
6
6
|
require 'pdfkit'
|
7
7
|
|
8
|
+
require 'time'
|
9
|
+
|
8
10
|
require 'fileutils'
|
11
|
+
require 'pathname'
|
9
12
|
|
10
13
|
require 'libis/format/config'
|
11
14
|
|
@@ -49,10 +52,10 @@ module Libis
|
|
49
52
|
target_format = options.delete(:to_html) ? :HTML : :PDF
|
50
53
|
result = msg_to_pdf(msg, target, target_format, options)
|
51
54
|
msg.close
|
52
|
-
|
55
|
+
result
|
53
56
|
end
|
54
57
|
|
55
|
-
def msg_to_pdf(msg, target, target_format, pdf_options,
|
58
|
+
def msg_to_pdf(msg, target, target_format, pdf_options, root_msg: true)
|
56
59
|
|
57
60
|
# Make sure the target directory exists
|
58
61
|
outdir = File.dirname(target)
|
@@ -116,6 +119,11 @@ module Libis
|
|
116
119
|
end
|
117
120
|
end
|
118
121
|
|
122
|
+
[:date].each do |key|
|
123
|
+
next unless headers[key]
|
124
|
+
headers[key] = DateTime.parse(headers[key]).to_time.localtime.iso8601
|
125
|
+
end
|
126
|
+
|
119
127
|
# Add header section to the HTML body
|
120
128
|
unless hdr_html.empty?
|
121
129
|
# Insert header block styles
|
@@ -139,26 +147,28 @@ module Libis
|
|
139
147
|
body.gsub!(IMG_CID_PLAIN_REGEX) do |match|
|
140
148
|
# puts "CID found: #{match}, looking for #{$1}"
|
141
149
|
data = getAttachmentData(attachments, $1)
|
142
|
-
|
143
|
-
# puts "cid #{$1} not found"
|
144
|
-
return '<img src=""/>'
|
145
|
-
end
|
150
|
+
if data
|
146
151
|
# puts "cid #{$1} data: #{data.inspect}"
|
147
|
-
|
148
|
-
|
152
|
+
used_files << $1
|
153
|
+
"<img src=\"data:#{data[:mime_type]};base64,#{data[:base64]}\"/>"
|
154
|
+
else
|
155
|
+
# puts "cid #{$1} not found"
|
156
|
+
'<img src=""/>'
|
157
|
+
end
|
149
158
|
end
|
150
159
|
|
151
160
|
# Then process HTML img tags with CID entries
|
152
161
|
body.gsub!(IMG_CID_HTML_REGEX) do |match|
|
153
162
|
# puts "CID found: #{match}, looking for #{$1}"
|
154
163
|
data = getAttachmentData(attachments, $1)
|
155
|
-
|
156
|
-
# puts "cid #{$1} not found"
|
157
|
-
return ''
|
158
|
-
end
|
164
|
+
if data
|
159
165
|
# puts "cid #{$1} data: #{data.inspect}"
|
160
166
|
used_files << $1
|
161
167
|
"data:#{data[:mime_type]};base64,#{data[:base64]}"
|
168
|
+
else
|
169
|
+
# puts "cid #{$1} not found"
|
170
|
+
''
|
171
|
+
end
|
162
172
|
end
|
163
173
|
|
164
174
|
# Create PDF
|
@@ -196,15 +206,15 @@ module Libis
|
|
196
206
|
# ----------------
|
197
207
|
outdir = File.join(outdir, "#{File.basename(target)}.attachments")
|
198
208
|
digits = ((attachments.count + 1)/ 10) + 1
|
199
|
-
i =
|
209
|
+
i = 1
|
200
210
|
attachments.delete_if {|a| a.properties.attachment_hidden}.each do |a|
|
201
211
|
prefix = "#{"%0*d" % [digits, i]}-"
|
202
212
|
if sub_msg = a.instance_variable_get(:@embedded_msg)
|
203
213
|
# puts "Embedded email message ..."
|
204
214
|
subject = a.properties[:display_name] || sub_msg.subject || ""
|
205
|
-
file = File.join(outdir, "#{prefix}#{subject}.#{target_format.to_s.downcase}")
|
215
|
+
file = File.join(outdir, "#{prefix}#{subject}.msg.#{target_format.to_s.downcase}")
|
206
216
|
|
207
|
-
result = msg_to_pdf(sub_msg, file, target_format, pdf_options,
|
217
|
+
result = msg_to_pdf(sub_msg, file, target_format, pdf_options, root_msg: false)
|
208
218
|
if e = result[:error]
|
209
219
|
raise
|
210
220
|
end
|
@@ -223,6 +233,13 @@ module Libis
|
|
223
233
|
end
|
224
234
|
i += 1
|
225
235
|
end
|
236
|
+
|
237
|
+
if root_msg
|
238
|
+
p = Pathname(File.dirname(files.first))
|
239
|
+
files[1..].each do |f|
|
240
|
+
(headers[:attachments] ||= []) << Pathname.new(f).relative_path_from(p).to_s
|
241
|
+
end
|
242
|
+
end
|
226
243
|
|
227
244
|
{
|
228
245
|
command: {status: 0},
|
@@ -234,7 +251,7 @@ module Libis
|
|
234
251
|
rescue Exception => e
|
235
252
|
# puts "ERROR: Exception #{e.class} raised: #{e.message}"
|
236
253
|
# e.backtrace.each {|t| puts " - #{t}"}
|
237
|
-
raise
|
254
|
+
raise unless root_msg
|
238
255
|
msg.close
|
239
256
|
return {
|
240
257
|
command: {status: -1},
|
@@ -285,7 +302,7 @@ module Libis
|
|
285
302
|
}
|
286
303
|
end
|
287
304
|
end
|
288
|
-
|
305
|
+
nil
|
289
306
|
end
|
290
307
|
|
291
308
|
def read_header(headers_file)
|
data/lib/libis/format/version.rb
CHANGED
data/libis-format.gemspec
CHANGED
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_runtime_dependency 'chromaprint', '~> 0.0.2'
|
41
41
|
spec.add_runtime_dependency 'naturally', '~> 2.1'
|
42
42
|
spec.add_runtime_dependency 'pdfinfo', '~> 1.4'
|
43
|
-
spec.add_runtime_dependency '
|
43
|
+
spec.add_runtime_dependency 'libis-mapi', '~> 0.3'
|
44
44
|
spec.add_runtime_dependency 'new_rfc_2047'
|
45
45
|
spec.add_runtime_dependency 'pdfkit'
|
46
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-format
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -179,19 +179,19 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '1.4'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: libis-mapi
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0'
|
187
|
+
version: '0.3'
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0'
|
194
|
+
version: '0.3'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: new_rfc_2047
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|