cbeta 1.3.1 → 1.3.2
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/lib/cbeta/html_to_pdf.rb +10 -8
- data/lib/cbeta/p5a_to_html.rb +5 -2
- data/lib/cbeta/p5a_to_html_for_pdf.rb +110 -51
- data/lib/data/html-for-pdf.css +72 -15
- data/lib/data/pdf-template.htm +18 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c227a83872ae6d070b3c37ba8ba0895bd46242e2
|
4
|
+
data.tar.gz: c89bdb2a9e7c3410c6f4de3e1a4ed760fc73fe2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08f20461b411e57c6dabba538faf7f64c73cdc2cd7d8296a33fca0202091a7f36004862a4f6b3b11b9cc99776bec64651b29aa83966692340b821d5d7623f3b5
|
7
|
+
data.tar.gz: 7b0751f4610efb54b7dd959a827d5ffa81f61ebd9a5ada6c2f3dfc31de6fb22fe5ad259cd7b537d4e29ac656d590802e18db537e6fb97a9924ebbb37fff5ea86
|
data/lib/cbeta/html_to_pdf.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
|
-
require 'wicked_pdf'
|
2
|
-
|
3
1
|
class CBETA::HTMLToPDF
|
4
2
|
# @param input [String] folder of source HTML, HTML can be produced by CBETA::P5aToHTMLForPDF.
|
5
3
|
# @param output [String] output folder
|
6
|
-
|
4
|
+
# @param converter [String] shell command to convert HTML to PDF
|
5
|
+
# * suggestion: http://www.princexml.com/
|
6
|
+
# * wkhtmltopdf has font problem to display unicode extb characters
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# c = CBETA::HTMLToPDF.new('/temp/cbeta-html', '/temp/cbeta-pdf', "prince %{in} -o %{out}")
|
10
|
+
def initialize(input, output, converter)
|
7
11
|
@input = input
|
8
12
|
@output = output
|
13
|
+
@converter = converter
|
9
14
|
end
|
10
15
|
|
11
16
|
# Convert CBETA HTML to PDF
|
@@ -55,11 +60,8 @@ class CBETA::HTMLToPDF
|
|
55
60
|
|
56
61
|
def convert_file(html_fn, pdf_fn)
|
57
62
|
puts "convert file: #{html_fn} to #{pdf_fn}"
|
58
|
-
|
59
|
-
|
60
|
-
File.open(pdf_fn, 'wb') do |file|
|
61
|
-
file << pdf
|
62
|
-
end
|
63
|
+
cmd = @converter % { in: html_fn, out: pdf_fn}
|
64
|
+
`#{cmd}`
|
63
65
|
end
|
64
66
|
|
65
67
|
def convert_vol(arg)
|
data/lib/cbeta/p5a_to_html.rb
CHANGED
@@ -278,7 +278,9 @@ class CBETA::P5aToHTML
|
|
278
278
|
cell['class'] = 'lg-cell'
|
279
279
|
cell.inner_html = traverse(e)
|
280
280
|
|
281
|
-
if
|
281
|
+
if e.key? 'rend'
|
282
|
+
cell['style'] = e['rend']
|
283
|
+
elsif @first_l
|
282
284
|
parent = e.parent()
|
283
285
|
if parent.has_attribute?('rend')
|
284
286
|
indent = parent['rend'].scan(/text-indent:[^:]*/)
|
@@ -286,8 +288,9 @@ class CBETA::P5aToHTML
|
|
286
288
|
cell['style'] = indent[0]
|
287
289
|
end
|
288
290
|
end
|
289
|
-
@first_l = false
|
290
291
|
end
|
292
|
+
@first_l = false
|
293
|
+
|
291
294
|
r = to_html(cell)
|
292
295
|
|
293
296
|
unless @lg_row_open
|
@@ -4,6 +4,7 @@ require 'fileutils'
|
|
4
4
|
require 'json'
|
5
5
|
require 'nokogiri'
|
6
6
|
require 'set'
|
7
|
+
require 'erb'
|
7
8
|
|
8
9
|
# Convert CBETA XML P5a to HTML for PDF
|
9
10
|
#
|
@@ -23,6 +24,10 @@ class CBETA::P5aToHTMLForPDF
|
|
23
24
|
# * graphic_base/figures: 插圖圖檔位置
|
24
25
|
# * graphic_base/sd-gif: images for Siddham (悉曇字)
|
25
26
|
# * graphic_base/rj-gif: images for Ranjana (蘭札體)
|
27
|
+
# @option opts [String] :front_page 內文前可以加一段 HTML,例如「編輯說明」
|
28
|
+
# @option opts [String] :front_page_title 加在目錄的 front_page 標題
|
29
|
+
# @option opts [String] :back_page 內文後可以加一段 HTML,例如「版權聲明」
|
30
|
+
# @option opts [String] :back_page_title 加在目錄的 back_page 標題
|
26
31
|
def initialize(xml_root, out_root, opts={})
|
27
32
|
@config = {
|
28
33
|
}
|
@@ -70,6 +75,34 @@ class CBETA::P5aToHTMLForPDF
|
|
70
75
|
end
|
71
76
|
|
72
77
|
private
|
78
|
+
|
79
|
+
def before_parse_xml(xml_fn)
|
80
|
+
@div_count = 0
|
81
|
+
@in_l = false
|
82
|
+
@lg_row_open = false
|
83
|
+
@t_buf1 = []
|
84
|
+
@t_buf2 = []
|
85
|
+
@open_divs = []
|
86
|
+
@sutra_no = File.basename(xml_fn, ".xml")
|
87
|
+
|
88
|
+
@output_folder_sutra = File.join(@out_folder, @sutra_no)
|
89
|
+
FileUtils.mkdir_p(@output_folder_sutra) unless Dir.exist? @output_folder_sutra
|
90
|
+
|
91
|
+
src = File.join(CBETA::DATA, 'html-for-pdf.css')
|
92
|
+
dest = File.join(@output_folder_sutra, 'html-for-pdf.css')
|
93
|
+
FileUtils.copy(src, dest)
|
94
|
+
|
95
|
+
@nav_doc = Nokogiri::XML('<ul></ul>')
|
96
|
+
@nav_doc.remove_namespaces!()
|
97
|
+
@nav_root = @nav_doc.at_xpath('/ul')
|
98
|
+
@current_nav = [@nav_root]
|
99
|
+
@mulu_count = 0
|
100
|
+
|
101
|
+
if @config[:front_page_title]
|
102
|
+
s = @config[:front_page_title]
|
103
|
+
@nav_root.add_child("<li><a href='#front'>#{s}</a></li>")
|
104
|
+
end
|
105
|
+
end
|
73
106
|
|
74
107
|
def convert_all
|
75
108
|
Dir.foreach(@xml_root) { |c|
|
@@ -119,7 +152,7 @@ class CBETA::P5aToHTMLForPDF
|
|
119
152
|
end
|
120
153
|
|
121
154
|
def handle_corr(e)
|
122
|
-
traverse(e)
|
155
|
+
"<span class='corr'>%s</span>" % traverse(e)
|
123
156
|
end
|
124
157
|
|
125
158
|
def handle_div(e)
|
@@ -133,22 +166,18 @@ class CBETA::P5aToHTMLForPDF
|
|
133
166
|
end
|
134
167
|
end
|
135
168
|
|
169
|
+
def handle_doc_number(e)
|
170
|
+
"<p>%s</p>" % traverse(e)
|
171
|
+
end
|
172
|
+
|
136
173
|
def handle_figure(e)
|
137
174
|
"<div class='figure'>%s</div>" % traverse(e)
|
138
175
|
end
|
139
176
|
|
140
177
|
def handle_g(e, mode)
|
141
|
-
#
|
142
|
-
#
|
143
|
-
#
|
144
|
-
# else
|
145
|
-
# 預設呈現 unicode, 但仍包缺字資訊,供點選開 popup
|
146
|
-
# else if 有 <mapping type="normal_unicode">
|
147
|
-
# 預設呈現 normal_unicode, 但仍包缺字資訊,供點選開 popup
|
148
|
-
# else if 有 normalized form
|
149
|
-
# 預設呈現 normalized form, 但仍包缺字資訊,供點選開 popup
|
150
|
-
# else
|
151
|
-
# 預設呈現組字式, 但仍包缺字資訊,供點選開 popup
|
178
|
+
# 悉曇字、蘭札體 使用圖檔
|
179
|
+
# 如果有對應的 unicode 且不在 Unicode Extension C, D, E 範圍裡,直接採用 unicode
|
180
|
+
# 呈現組字式
|
152
181
|
gid = e['ref'][1..-1]
|
153
182
|
g = @gaijis[gid]
|
154
183
|
abort "Line:#{__LINE__} 無缺字資料:#{gid}" if g.nil?
|
@@ -163,8 +192,6 @@ class CBETA::P5aToHTMLForPDF
|
|
163
192
|
end
|
164
193
|
end
|
165
194
|
|
166
|
-
@char_count += 1
|
167
|
-
|
168
195
|
if gid.start_with?('SD')
|
169
196
|
case gid
|
170
197
|
when 'SD-E35A'
|
@@ -188,14 +215,12 @@ class CBETA::P5aToHTMLForPDF
|
|
188
215
|
end
|
189
216
|
|
190
217
|
if g.has_key?('unicode')
|
191
|
-
|
218
|
+
# 如果不在 unicode ext-C, ext-D, ext-E 範圍內
|
219
|
+
unless (0x2A700..0x2CEAF).include? g['unicode'].hex
|
192
220
|
return g['unicode-char'] # 直接採用 unicode
|
193
221
|
end
|
194
222
|
end
|
195
223
|
|
196
|
-
return g['normal_unicode'] if g.has_key?('normal_unicode')
|
197
|
-
return g['normal'] if g.has_key?('normal')
|
198
|
-
|
199
224
|
zzs
|
200
225
|
end
|
201
226
|
|
@@ -217,7 +242,11 @@ class CBETA::P5aToHTMLForPDF
|
|
217
242
|
return traverse(e)
|
218
243
|
else
|
219
244
|
i = @open_divs.size
|
220
|
-
|
245
|
+
if i <= 6
|
246
|
+
return "<p class='h#{i}'>%s</p>" % traverse(e)
|
247
|
+
else
|
248
|
+
return "<p class='h#{i}'>%s</p>" % traverse(e)
|
249
|
+
end
|
221
250
|
end
|
222
251
|
end
|
223
252
|
|
@@ -239,9 +268,11 @@ class CBETA::P5aToHTMLForPDF
|
|
239
268
|
doc = Nokogiri::XML::Document.new
|
240
269
|
cell = doc.create_element('div')
|
241
270
|
cell['class'] = 'lg-cell'
|
242
|
-
cell.inner_html = traverse(e)
|
271
|
+
cell.inner_html = traverse(e) + ' '
|
243
272
|
|
244
|
-
if
|
273
|
+
if e.key? 'rend'
|
274
|
+
cell['style'] = e['rend']
|
275
|
+
elsif @first_l
|
245
276
|
parent = e.parent()
|
246
277
|
if parent.has_attribute?('rend')
|
247
278
|
indent = parent['rend'].scan(/text-indent:[^:]*/)
|
@@ -249,8 +280,8 @@ class CBETA::P5aToHTMLForPDF
|
|
249
280
|
cell['style'] = indent[0]
|
250
281
|
end
|
251
282
|
end
|
252
|
-
@first_l = false
|
253
283
|
end
|
284
|
+
@first_l = false
|
254
285
|
r = to_html(cell)
|
255
286
|
|
256
287
|
unless @lg_row_open
|
@@ -280,7 +311,14 @@ class CBETA::P5aToHTMLForPDF
|
|
280
311
|
end
|
281
312
|
|
282
313
|
def handle_lem(e)
|
283
|
-
|
314
|
+
r = ''
|
315
|
+
w = e['wit']
|
316
|
+
if w.include? 'CBETA' and not w.include? @orig
|
317
|
+
r = "<span class='corr'>%s</span>" % traverse(e)
|
318
|
+
else
|
319
|
+
r = traverse(e)
|
320
|
+
end
|
321
|
+
r
|
284
322
|
end
|
285
323
|
|
286
324
|
def handle_lg(e)
|
@@ -317,7 +355,20 @@ class CBETA::P5aToHTMLForPDF
|
|
317
355
|
end
|
318
356
|
|
319
357
|
def handle_mulu(e)
|
320
|
-
''
|
358
|
+
return '' if e['type']=='卷'
|
359
|
+
@mulu_count += 1
|
360
|
+
level = e['level'].to_i
|
361
|
+
while @current_nav.size > level
|
362
|
+
@current_nav.pop
|
363
|
+
end
|
364
|
+
|
365
|
+
label = traverse(e, 'txt')
|
366
|
+
li = @current_nav.last.add_child("<li><a href='#mulu#{@mulu_count}'>#{label}</a></li>").first
|
367
|
+
ul = li.add_child('<ul></ul>').first
|
368
|
+
@current_nav << ul
|
369
|
+
|
370
|
+
# mulu 標記裡要有東西,prince 才會產生 pdf bookmark
|
371
|
+
"<a id='mulu#{@mulu_count}'></a><mulu#{level} title='#{label}'> </mulu#{level}>"
|
321
372
|
end
|
322
373
|
|
323
374
|
def handle_node(e, mode)
|
@@ -330,6 +381,7 @@ class CBETA::P5aToHTMLForPDF
|
|
330
381
|
when 'byline' then handle_byline(e)
|
331
382
|
when 'cell' then handle_cell(e)
|
332
383
|
when 'corr' then handle_corr(e)
|
384
|
+
when 'docNumber' then handle_doc_number(e)
|
333
385
|
when 'div' then handle_div(e)
|
334
386
|
when 'figure' then handle_figure(e)
|
335
387
|
when 'foreign' then ''
|
@@ -399,37 +451,42 @@ class CBETA::P5aToHTMLForPDF
|
|
399
451
|
|
400
452
|
def handle_sutra(xml_fn)
|
401
453
|
puts "convert sutra #{xml_fn}"
|
402
|
-
@back = { 0 => '' }
|
403
|
-
@char_count = 1
|
404
|
-
@dila_note = 0
|
405
|
-
@div_count = 0
|
406
|
-
@in_l = false
|
407
|
-
@juan = 0
|
408
|
-
@lg_row_open = false
|
409
|
-
@t_buf1 = []
|
410
|
-
@t_buf2 = []
|
411
|
-
@open_divs = []
|
412
|
-
@sutra_no = File.basename(xml_fn, ".xml")
|
413
454
|
|
414
|
-
|
415
|
-
|
455
|
+
before_parse_xml(xml_fn)
|
456
|
+
|
457
|
+
@text = parse_xml(xml_fn)
|
416
458
|
|
417
|
-
|
418
|
-
|
419
|
-
|
459
|
+
# 目次
|
460
|
+
if @config[:back_page_title]
|
461
|
+
s = @config[:back_page_title]
|
462
|
+
@nav_root.add_child("<li><a href='#back'>#{s}</a></li>")
|
463
|
+
end
|
464
|
+
@toc = to_html(@nav_root)
|
465
|
+
@toc.gsub!('<ul/>', '')
|
466
|
+
|
467
|
+
if @config.key? :front_page
|
468
|
+
s = File.read(@config[:front_page])
|
469
|
+
@front = "<div id='front'>#{s}</div>"
|
470
|
+
end
|
471
|
+
|
472
|
+
if @config.key? :back_page
|
473
|
+
s = File.read(@config[:back_page])
|
474
|
+
@back = "<div id='back'>#{s}</div>"
|
475
|
+
end
|
420
476
|
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
477
|
+
fn = File.join(CBETA::DATA, 'pdf-template.htm')
|
478
|
+
template = File.read(fn)
|
479
|
+
output = template % {
|
480
|
+
title: @title,
|
481
|
+
author: @author,
|
482
|
+
toc: @toc,
|
483
|
+
front: @front,
|
484
|
+
text: @text,
|
485
|
+
back: @back
|
486
|
+
}
|
430
487
|
|
431
488
|
fn = File.join(@output_folder_sutra, 'main.htm')
|
432
|
-
File.write(fn,
|
489
|
+
File.write(fn, output)
|
433
490
|
end
|
434
491
|
|
435
492
|
def handle_t(e)
|
@@ -470,7 +527,7 @@ class CBETA::P5aToHTMLForPDF
|
|
470
527
|
|
471
528
|
# cbeta xml 文字之間會有多餘的換行
|
472
529
|
r = s.gsub(/[\n\r]/, '')
|
473
|
-
|
530
|
+
|
474
531
|
# 把 & 轉為 &
|
475
532
|
r = CGI.escapeHTML(r)
|
476
533
|
|
@@ -532,6 +589,8 @@ class CBETA::P5aToHTMLForPDF
|
|
532
589
|
@title = traverse(e, 'txt')
|
533
590
|
@title = @title.split()[-1]
|
534
591
|
|
592
|
+
@author = doc.at_xpath("//titleStmt/author").text
|
593
|
+
|
535
594
|
e = doc.at_xpath("//editionStmt/edition/date")
|
536
595
|
abort "找不到版本日期" if e.nil?
|
537
596
|
@edition_date = e.text.sub(/\$Date: (.*?) \$$/, '\1')
|
data/lib/data/html-for-pdf.css
CHANGED
@@ -1,13 +1,24 @@
|
|
1
1
|
@font-face {
|
2
|
-
font-family:
|
3
|
-
|
4
|
-
|
2
|
+
font-family: extb;
|
3
|
+
font-style: normal;
|
4
|
+
font-weight: normal;
|
5
|
+
src: url("/Library/Fonts/Microsoft/PMingLiU-ExtB.ttf")
|
6
|
+
}
|
7
|
+
@font-face {
|
8
|
+
font-family: PMingLiU;
|
9
|
+
font-style: normal;
|
10
|
+
font-weight: normal;
|
11
|
+
src: url("/Library/Fonts/Microsoft/PMingLiU.ttf")
|
12
|
+
}
|
13
|
+
a {
|
14
|
+
text-decoration: none;
|
5
15
|
}
|
6
16
|
body {
|
7
|
-
font-family:
|
17
|
+
font-family: PMingLiU, extb;
|
8
18
|
}
|
9
19
|
div.lg {
|
10
20
|
display: table;
|
21
|
+
margin-left: 1em;
|
11
22
|
}
|
12
23
|
div.lg-cell {
|
13
24
|
display: table-cell;
|
@@ -16,37 +27,76 @@ div.lg-row {
|
|
16
27
|
display: table-row;
|
17
28
|
}
|
18
29
|
div.p {
|
19
|
-
margin-bottom:
|
30
|
+
margin-bottom: 1em;
|
31
|
+
margin-top: 1em;
|
20
32
|
line-height: 1.4;
|
21
|
-
text-indent: 2em;
|
22
|
-
}
|
23
|
-
p.byline {
|
24
|
-
text-align: right;
|
25
33
|
}
|
26
34
|
p.h1 {
|
27
|
-
|
35
|
+
margin-left: 1em;
|
36
|
+
font-size: 1.2em;
|
28
37
|
font-weight: bold;
|
29
38
|
}
|
30
39
|
p.h2 {
|
31
|
-
|
40
|
+
margin-left: 2em;
|
41
|
+
font-size: 1.2em;
|
32
42
|
font-weight: bold;
|
33
43
|
}
|
34
44
|
p.h3 {
|
35
|
-
|
45
|
+
margin-left: 3em;
|
46
|
+
font-size: 1.2em;
|
36
47
|
font-weight: bold;
|
37
48
|
}
|
38
49
|
p.h4 {
|
39
|
-
|
50
|
+
margin-left: 2em;
|
51
|
+
font-size: 1.2em;
|
40
52
|
font-weight: bold;
|
41
53
|
}
|
42
54
|
p.h5 {
|
43
|
-
|
55
|
+
margin-left: 3em;
|
56
|
+
font-size: 1.2em;
|
44
57
|
font-weight: bold;
|
45
58
|
}
|
46
59
|
p.h6 {
|
47
|
-
|
60
|
+
margin-left: 4em;
|
61
|
+
font-size: 1.2em;
|
48
62
|
font-weight: bold;
|
49
63
|
}
|
64
|
+
|
65
|
+
/*
|
66
|
+
mulu 標記是用來產生 pdf bookmark 用的
|
67
|
+
參考: http://www.princexml.com/doc/pdf-bookmarks/
|
68
|
+
*/
|
69
|
+
mulu1 {
|
70
|
+
prince-bookmark-level: 1;
|
71
|
+
prince-bookmark-label: attr(title)
|
72
|
+
}
|
73
|
+
mulu2 {
|
74
|
+
prince-bookmark-level: 2;
|
75
|
+
prince-bookmark-label: attr(title)
|
76
|
+
}
|
77
|
+
mulu3 {
|
78
|
+
prince-bookmark-level: 3;
|
79
|
+
prince-bookmark-label: attr(title)
|
80
|
+
}
|
81
|
+
mulu4 {
|
82
|
+
prince-bookmark-level: 4;
|
83
|
+
prince-bookmark-label: attr(title)
|
84
|
+
}
|
85
|
+
mulu5 {
|
86
|
+
prince-bookmark-level: 5;
|
87
|
+
prince-bookmark-label: attr(title)
|
88
|
+
}
|
89
|
+
mulu6 {
|
90
|
+
prince-bookmark-level: 6;
|
91
|
+
prince-bookmark-label: attr(title)
|
92
|
+
}
|
93
|
+
p.author {
|
94
|
+
font-size: 1.6em;
|
95
|
+
text-align: center;
|
96
|
+
}
|
97
|
+
p.byline {
|
98
|
+
text-align: right;
|
99
|
+
}
|
50
100
|
p.h7 {
|
51
101
|
text-indent: 2em;
|
52
102
|
font-weight: bold;
|
@@ -55,9 +105,16 @@ p.h8 {
|
|
55
105
|
text-indent: 2em;
|
56
106
|
font-weight: bold;
|
57
107
|
}
|
108
|
+
p.title {
|
109
|
+
font-size: 2em;
|
110
|
+
text-align: center;
|
111
|
+
}
|
58
112
|
span.corr {
|
59
113
|
color: red;
|
60
114
|
}
|
115
|
+
span.extb {
|
116
|
+
font-family: extb;
|
117
|
+
}
|
61
118
|
table {
|
62
119
|
border-collapse: collapse;
|
63
120
|
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<link rel=stylesheet type='text/css' href='html-for-pdf.css'>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<p class='title'>%{title}</p>
|
9
|
+
<p class='author'>%{author}</p>
|
10
|
+
<div>
|
11
|
+
<h1>目次</h1>
|
12
|
+
%{toc}
|
13
|
+
</div>
|
14
|
+
%{front}
|
15
|
+
%{text}
|
16
|
+
%{back}
|
17
|
+
</body>
|
18
|
+
</html>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cbeta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ray Chou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby gem for use Chinese Buddhist Text resources made by CBETA (http://www.cbeta.org).
|
14
14
|
email: zhoubx@gmail.com
|
@@ -36,6 +36,7 @@ files:
|
|
36
36
|
- lib/data/epub.css
|
37
37
|
- lib/data/gaiji.json
|
38
38
|
- lib/data/html-for-pdf.css
|
39
|
+
- lib/data/pdf-template.htm
|
39
40
|
- lib/data/unicode-1.1.json
|
40
41
|
homepage: https://github.com/RayCHOU/ruby-cbeta
|
41
42
|
licenses:
|