lib/pdf/reader/page_layout.rb in pdf-reader-2.4.0 vs lib/pdf/reader/page_layout.rb in pdf-reader-2.4.1

- old
+ new

@@ -19,21 +19,23 @@ @runs = merge_runs(OverlappingRunsFilter.exclude_redundant_runs(runs)) @mean_font_size = mean(@runs.map(&:font_size)) || DEFAULT_FONT_SIZE @mean_font_size = DEFAULT_FONT_SIZE if @mean_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 + @page_width = (mediabox[2] - mediabox[0]).abs + @page_height = (mediabox[3] - mediabox[1]).abs + @x_offset = @runs.map(&:x).sort.first || 0 + lowest_y = @runs.map(&:y).sort.first || 0 + @y_offset = lowest_y > 0 ? 0 : lowest_y end 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 + y_pos = row_count - ((run.y - @y_offset) / row_multiplier).round if y_pos <= row_count && y_pos >= 0 && x_pos <= col_count && x_pos >= 0 local_string_insert(page[y_pos-1], run.text, x_pos) end end interesting_rows(page).map(&:rstrip).join("\n")