Search code examples
rubypdfword-wrapprawn

Left-right split in Prawn PDF


Some PDFs have text where some of the content is on the left side, and other parts are on the right side. Is it possible to get Prawn to do this automatically, where the text automatically wraps to the right half of the page after the left half is filled up?

An example image is provided:

enter image description here


Solution

  • This is freely taken from Prawn manual (Last Update: 2019-06-09 - Prawn Version: 2.2.2) page 43:

    require "prawn"
    
    Prawn::Document.generate("prince.pdf") do
    
      column_box([0, cursor], columns: 2, width: bounds.width) do
        text 'The Prince',          align: :center, size: 18
        text 'Niccolo Machiavelli', align: :center, size: 14
        move_down 12
        text "All the States and Governments by which men are or ever have been ruled,
          have been and are either Republics or Princedoms. Princedoms are either
          hereditary, in which the sovereignty is derived through an ancient line
          of ancestors, or they are new. New Princedoms are either wholly new, as
          that of Milan to Francesco Sforza; or they are like limbs joined on to
          the hereditary possessions of the Prince who acquires them, as the
          Kingdom of Naples to the dominions of the King of Spain. The States thus
          acquired have either been used to live under a Prince or have been free;
          and he who acquires them does so either by his own arms or by the arms of
          others, and either by good fortune or by merit." * 10
      end
    end