The Prawn::SoftMask module is used to create arbitrary transparency in document. Using a soft mask allows creating more visually rich documents.
You must group soft mask and graphics it’s applied to under save_graphics_state because soft mask is a part of graphic state in PDF.
Example:
pdf.save_graphics_state do pdf.soft_mask do pdf.fill_color "444444" pdf.fill_polygon [0, 40], [60, 10], [120, 40], [60, 68] end pdf.fill_color '000000' pdf.fill_rectangle [0, 50], 120, 68 end
@group Stable API
# File lib/prawn/soft_mask.rb, line 30 def soft_mask(&block) min_version(1.4) group_attrs = ref!({ :Type => :Group, :S => :Transparency, :CS => :DeviceRGB, :I => false, :K => false }) group = ref!({ :Type => :XObject, :Subtype => :Form, :BBox => state.page.dimensions, :Group => group_attrs, }) state.page.stamp_stream(group, &block) mask = ref!({ :Type => :Mask, :S => :Luminosity, :G => group }) g_state = ref!({ :Type => :ExtGState, :SMask => mask, :AIS => false, :BM => :Normal, :OP => false, :op => false, :OPM => 1, :SA => true, }) registry_key = { :bbox => state.page.dimensions, :mask => [group.stream.filters.normalized, group.stream.filtered_stream], :page => state.page_count, }.hash if soft_mask_registry[registry_key] add_content "/#{soft_mask_registry[registry_key]} gs" else masks = page.resources[:ExtGState] ||= {} id = masks.empty? ? 'GS1' : masks.keys.sort.last.succ masks[id] = g_state soft_mask_registry[registry_key] = id add_content "/#{id} gs" end end
Generated with the Darkfish Rdoc Generator 2.