# Rapport

Rapport aims to provide a robust set of modules to generate HTML reports that both looks good in the browser and when being printed.

[![Build Status](](
[![Inline docs](](
[![Coverage Status](](

## Installation

The package can be installed
by adding `rapport` to your list of dependencies in `mix.exs`:

def deps do
    {:rapport, "~> 0.6"}

## Notable features
  * Specify paper size for the report
  * Specify rotation for the report
  * Image helpers
  * Font helpers
  * Page numbering
  * Add custom styling & even Javascript
  * Barcodes

## Hello world

page_template = "<h1><%= @hello %></h1>"
html_report =
  |> Rapport.add_page(page_template, %{hello: "Hello world!"})
  |> Rapport.save_to_file("/home/users/ricn/hello.html")

The snippet above generates a report containing only one page with a heading that says "Hello world!".

[See example here](

## More examples
  * [Custom fonts and styling](
  * [Invoice](
  * [Page numbering](
  * [List of people with cover page](
  * [Barcodes](
  * More examples are coming...

If you want to see how the examples has been created, you can look at the `example_test.exs` file in the test folder.

## Phoenix integration

It's easy to Integrate Rapport with Phoenix. Just load the template as a module attribute, create the HTML for the report
and send a response with the generated HTML:

defmodule ReportsWeb.ReportController do
  use ReportsWeb, :controller

  @page_template!(Path.join(__DIR__, "../templates/report/hello.html.eex"))

  def hello(conn, _params) do
    html_report =
       |> Rapport.add_page(@page_template, %{hello: "Hello World!"})
       |> Rapport.generate_html

       |> put_resp_content_type("text/html")
       |> send_resp(200, html_report)

## Upcoming features
  * Charts
  * PDF conversion

## Credits

The following people have contributed ideas, documentation, or code to Rapport:

* Richard Nyström

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request