Takes a collection of TextRun objects and renders them into a single string that best approximates the way they'd appear on a render PDF page.
media box should be a 4 number array that describes the dimensions of the page to be rendered as described by the page's MediaBox attribute
# File lib/pdf/reader/page_layout.rb, line 10 def initialize(runs, mediabox) raise ArgumentError, "a mediabox must be provided" if mediabox.nil? @runs = merge_runs(runs) @mean_font_size = mean(@runs.map(&:font_size)) || 0 @mean_glyph_width = mean(@runs.map(&:mean_character_width)) || 0 @page_width = mediabox[2] - mediabox[0] @page_height = mediabox[3] - mediabox[1] @x_offset = @runs.map(&:x).sort.first @current_platform_is_rbx_19 = RUBY_DESCRIPTION =~ /\Arubinius 2.0.0/ && RUBY_VERSION >= "1.9.0" end
# File lib/pdf/reader/page_layout.rb, line 23 def to_s return "" if @runs.empty? page = row_count.times.map { |i| " " * col_count } @runs.each do |run| x_pos = ((run.x - @x_offset) / col_multiplier).round y_pos = row_count - (run.y / row_multiplier).round if y_pos < row_count && y_pos >= 0 && x_pos < col_count && x_pos >= 0 local_string_insert(page[y_pos], run.text, x_pos) end end interesting_rows(page).map(&:rstrip).join("\n") end
Generated with the Darkfish Rdoc Generator 2.