class CBETA::HTMLToPDF
Public Class Methods
new(input, output, converter)
click to toggle source
@param input [String] folder of source HTML, HTML can be produced by CBETA::P5aToHTMLForPDF
. @param output [String] output folder @param converter [String] shell command to convert HTML to PDF
* suggestion: http://www.princexml.com/ * wkhtmltopdf has font problem to display unicode extb characters
@example
c = CBETA::HTMLToPDF.new('/temp/cbeta-html', '/temp/cbeta-pdf', "prince %{in} -o %{out}")
# File lib/cbeta/html_to_pdf.rb, line 12 def initialize(input, output, converter) @input = input @output = output @converter = converter end
Public Instance Methods
convert(target=nil)
click to toggle source
Convert CBETA
HTML to PDF
@example for convert Taisho (大正藏) Volumn 1:
c = CBETA::HTMLToPDF.new('/PATH/TO/CBETA/XML/P5a', '/OUTPUT/FOLDER') c.convert('T01')
@example for convert all in Taisho (大正藏):
c = CBETA::HTMLToPDF.new('/PATH/TO/CBETA/XML/P5a', '/OUTPUT/FOLDER') c.convert('T')
@example for convert Taisho Vol. 5~7:
c = CBETA::P5aToHTMLForPDF.new('/PATH/TO/CBETA/XML/P5a', '/OUTPUT/FOLDER') c.convert('T05..T07')
T 是大正藏的 ID, CBETA
的藏經 ID 系統請參考: www.cbeta.org/format/id.php
# File lib/cbeta/html_to_pdf.rb, line 36 def convert(target=nil) return convert_all if target.nil? arg = target.upcase if arg.size <= 2 convert_collection(arg) else if arg.include? '..' arg.match(/^([^\.]+?)\.\.([^\.]+)$/) { convert_vols($1, $2) } else convert_vol(arg) end end end
convert_collection(c)
click to toggle source
# File lib/cbeta/html_to_pdf.rb, line 53 def convert_collection(c) @canon = c puts 'convert_collection ' + c output_folder = File.join(@output, @canon) FileUtils.mkdir_p(output_folder) unless Dir.exist? output_folder folder = File.join(@input, @canon) Dir.foreach(folder) { |f| next if f.start_with? '.' src = File.join(folder, f, 'main.htm') dest = File.join(output_folder, "#{f}.pdf") convert_file(src, dest) } end
convert_file(html_fn, pdf_fn)
click to toggle source
# File lib/cbeta/html_to_pdf.rb, line 69 def convert_file(html_fn, pdf_fn) puts "convert file: #{html_fn} to #{pdf_fn}" cmd = @converter % { in: html_fn, out: pdf_fn} `#{cmd}` end