bin/svggvs in svggvs-0.0.10.1 vs bin/svggvs in svggvs-0.0.12

- old
+ new

@@ -72,73 +72,83 @@ def pngs write_svgs ensure_tmp @exported_pngs = Parallel.map(context.individual_files.each_with_index) do |svg_file, index| - target = Pathname(context.session.png_files_path % index) + target = Pathname(session.png_files_path % index) target.parent.mkpath - system %{inkscape --export-area-page --export-png "#{target.expand_path}" --export-width #{context.session.png_export_width} --export-background="#ffffffff" "#{svg_file.expand_path}"} + command = %{inkscape --export-area-page --export-png "#{target.expand_path}" --export-background="#ffffffff" } + case session.orientation + when :portrait + command += %{--export-width #{session.png_export_width}} + when :landscape + command += %{--export-height #{session.png_export_width}} + end + command += %{ "#{svg_file.expand_path}"} + + system command + + if session.orientation == :landscape + system %{convert -verbose "#{target.expand_path}" -rotate 270 "#{target.expand_path}"} + end + target end end - CARDS_PER_PAGE = 9 - desc "pdf", "Create PDF of card images" def pdf pngs + pdf_obj = session.pdf_class.new(card_size: session.pdf_card_size) + trimmed_pngs = Parallel.map(@exported_pngs) do |png| tmp_target = tmp_target_for(png) - system %{convert #{png} -gravity Center -crop #{context.session.pdf_card_size}+0+0 +repage #{tmp_target}} + system %{convert #{png} -gravity Center -crop #{session.pdf_card_size}+0+0 +repage #{tmp_target}} tmp_target end - png_slices = trimmed_pngs.each_slice(CARDS_PER_PAGE) + png_slices = trimmed_pngs.each_slice(pdf_obj.cards_per_page) - page_count = trimmed_pngs.length / CARDS_PER_PAGE + page_count = trimmed_pngs.length / pdf_obj.cards_per_page placeholder = tmp_target_for("placeholder.png") - system %{convert -size #{context.session.pdf_card_size} xc:white #{placeholder}} + system %{convert -size #{session.pdf_card_size} xc:white #{placeholder}} - pdf_obj = SVGGVS::PDF.new(card_size: context.session.pdf_card_size) - pages = Parallel.map(png_slices.each_with_index) do |files, page_index| - tmp_pdf_png_target = tmp_path.join("page%05d.pdf" % page_index) tmp_pdf_target = tmp_path.join("page%05d.pdf" % page_index) - files += Array.new(9 - files.length, placeholder) + files += Array.new(pdf_obj.cards_per_page - files.length, placeholder) - system %{montage -density #{context.session.pdf_dpi} -geometry +0+0 #{files.join(' ')} #{tmp_pdf_png_target}} - system %{convert -density #{context.session.pdf_dpi} #{tmp_pdf_png_target} -bordercolor white -border #{SVGGVS::PDF.border_size} #{pdf_obj.generate_crop_mark_draws.join(' ')} #{tmp_pdf_target}}.tap { |o| p o } + system %{montage -density #{session.pdf_dpi} -tile #{pdf_obj.montage_tiling} -geometry +0+0 #{files.join(' ')} #{tmp_pdf_target}} tmp_pdf_target end - if context.session.card_back - tmp_target = tmp_target_for(context.session.card_back) + if session.card_back + tmp_target = tmp_target_for(session.card_back) tmp_pdf_target = tmp_path.join("backs.pdf") - system %{convert #{context.session.card_back} -gravity Center -crop #{context.session.pdf_card_size}+0+0 +repage #{tmp_target}} - system %{montage -density #{context.session.pdf_dpi} -geometry +0+0 #{Array.new(9, tmp_target).join(' ')} #{tmp_pdf_target}} + system %{convert #{session.card_back} -gravity Center -crop #{session.pdf_card_size}+0+0 +repage #{tmp_target}} + system %{montage -density #{session.pdf_dpi} -geometry +0+0 #{Array.new(pdf_obj.cards_per_page, tmp_target).join(' ')} #{tmp_pdf_target}} pages.length.times do |page| pages << tmp_pdf_target end end - Pathname(context.session.pdf_target).parent.mkpath + Pathname(session.pdf_target).parent.mkpath - if context.session.prepend_pdf - pages.unshift context.session.prepend_pdf + if session.prepend_pdf + pages.unshift session.prepend_pdf end - system "gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=#{context.session.pdf_target} -dBATCH #{pages.join(" ")}" + system "gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=#{session.pdf_target} -dBATCH #{pages.join(" ")}" end no_tasks do def tmp_target_for(file) tmp_path.join(Digest::MD5.hexdigest(file.to_s) + '.png') @@ -157,9 +167,13 @@ @context ||= SVGGVS::Context.load(options[:cardfile]) end def write_svgs context.write_individual_files + end + + def session + context.session end end end end