lib/pdf/paper.ex

defmodule Pdf.Paper do
  @moduledoc false

  [
    a0: [2380, 3368],
    a1: [1684, 2380],
    a2: [1190, 1684],
    a3: [842, 1190],
    a4: [595, 842],
    a5: [421, 595],
    a6: [297, 421],
    a7: [210, 297],
    a8: [148, 210],
    a9: [105, 148],
    b0: [2836, 4008],
    b1: [2004, 2836],
    b2: [1418, 2004],
    b3: [1002, 1418],
    b4: [709, 1002],
    b5: [501, 709],
    b6: [355, 501],
    b7: [250, 355],
    b8: [178, 250],
    b9: [125, 178],
    b10: [89, 125],
    c5e: [462, 649],
    comm10e: [298, 683],
    dle: [312, 624],
    executive: [542, 720],
    folio: [595, 935],
    ledger: [1224, 792],
    legal: [612, 1008],
    letter: [612, 792],
    tabloid: [792, 1224]
  ]
  |> Enum.each(fn {size, dimensions} ->
    def size(unquote(size)), do: [0, 0 | unquote(dimensions)]
    def size({unquote(size), :landscape}), do: [0, 0 | unquote(Enum.reverse(dimensions))]
  end)

  def size([_width, _height] = dimensions), do: [0, 0 | dimensions]
end