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