https://github.com/gutschilla/elixir-pdf-generator

defmodule Pdf do
  @moduledoc "Generate PDFs from HTML"

  def generate_pdf(html) do
    {:ok, pdf} = PdfGenerator.generate(html, delete_temporary: true)
    pdf
  end

  def assemble_pdf(pdfs, output) when is_list(pdfs) and is_binary(output) do
    args = pdfs ++ [output]
    {_, 0} = System.cmd("pdfunite", args, stderr_to_stdout: true)
    {:ok, output}
  end
end
defmodule PdfTest do
  use ExUnit.Case

  def dummy_html(text) do
    "<!DOCTYPE html><body><h1>Hello World! : #{text}</h1></body></html>"
  end

  describe "pdf generation" do
    test "generate a single page pdf" do
      pdf = Pdf.generate_pdf(dummy_html("single"))
      assert File.exists?(pdf)
      assert is_binary(pdf)
      File.rm(pdf)
    end
    test "assemble 2 pdf" do
      pdf1 = Pdf.generate_pdf(dummy_html("1"))
      pdf2 = Pdf.generate_pdf(dummy_html("2"))
      output = "output.pdf"
      Pdf.assemble_pdf([pdf1, pdf2], output)
      assert File.exists?(output)
      File.rm(pdf1)
      File.rm(pdf2)
      File.rm(output)
    end
  end
end