-
-
Save tochman/c5e1b40a9ace1f5c3820a1d7f4d7cf7f to your computer and use it in GitHub Desktop.
How to prevent prawn wrap_by_char? charred.pdf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env ruby | |
| require 'rubygems' | |
| require 'prawn' | |
| @pdf = Prawn::Document.new | |
| x = 0 | |
| texts = [ "alexander", "the alexander", "the alexander building" ] | |
| texts.each do |text| | |
| @pdf.bounding_box([x, 700], :height => 250, :width => 150) do | |
| @pdf.stroke_bounds | |
| @pdf.text_box text, :size => 100, :min_font_size => 2, :overflow => :shrink_to_fit | |
| x += 200 | |
| end | |
| end | |
| PrawnSplitWord = Class.new(StandardError) | |
| module Prawn | |
| module Core | |
| module Text | |
| module Formatted #:nodoc: | |
| class LineWrap #:nodoc: | |
| def wrap_by_char(segment) | |
| raise PrawnSplitWord | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| module Prawn | |
| module Text | |
| module Formatted | |
| class Box | |
| def shrink_to_fit(text) | |
| begin | |
| wrap(text) | |
| rescue PrawnSplitWord | |
| @everything_printed = false | |
| end | |
| until @everything_printed || @font_size <= @min_font_size | |
| @font_size = [@font_size - 0.5, @min_font_size].max | |
| @document.font_size = @font_size | |
| begin | |
| wrap(text) | |
| rescue PrawnSplitWord | |
| @everything_printed = false | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| end | |
| x = 0 | |
| texts.each do |text| | |
| @pdf.bounding_box([x, 300], :height => 250, :width => 150) do | |
| @pdf.stroke_bounds | |
| @pdf.text_box text, :size => 100, :min_font_size => 2, :overflow => :shrink_to_fit | |
| x += 200 | |
| end | |
| end | |
| @pdf.render_file 'charred.pdf' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment