class SvgTemplateToPdf
Constants
- VERSION
Public Class Methods
new(svg_filename, csv_filename, output_folder = "~", pdf_filename = nil)
click to toggle source
# File lib/svg_template_to_pdf.rb, line 8 def initialize(svg_filename, csv_filename, output_folder = "~", pdf_filename = nil) @svg_input = File.read(svg_filename) @csv_filename = csv_filename @output_folder = output_folder @pdf_filename = pdf_filename end
Public Instance Methods
process()
click to toggle source
# File lib/svg_template_to_pdf.rb, line 23 def process output_files = [] CSV.read(@csv_filename, headers: true).each_with_index do |row, i| # for each row produce pdf with data content = @svg_input.dup variables.each { |col| content.sub!("%VAR_#{col}%", row[col].to_s) } output_files << Svg2pdf.convert_from_data(content, :pdf, working_dir: @output_folder, output_name: "#{@pdf_filename}#{i}") end output_files end
variables()
click to toggle source
Get header names from svg
# File lib/svg_template_to_pdf.rb, line 16 def variables result = @svg_input.scan(/%VAR_(\w+)%/).flatten duplicates = get_duplicates(result) raise StandardError, "More than 1 use of variables #{duplicates.join(", ")} in the SVG file." if duplicates.size != 0 result end
Private Instance Methods
get_duplicates(ary)
click to toggle source
# File lib/svg_template_to_pdf.rb, line 35 def get_duplicates(ary) ary.group_by { |v| v }.select { |k, v| v.count > 1 }.keys end