defmodule Pdf.Trailer do alias Pdf.Dictionary defstruct objects: [], offset: 0, root: nil, info: nil def new(objects, offset, root, info), do: %__MODULE__{objects: objects, offset: offset, root: root, info: info} defimpl Pdf.Export do def to_iolist(trailer) do dictionary = Dictionary.new() |> Dictionary.put("Size", length(trailer.objects) + 1) |> Dictionary.put("Root", trailer.root) |> Dictionary.put("Info", trailer.info) Pdf.Export.to_iolist(["trailer\n", dictionary, "\nstartxref\n", trailer.offset, "\n%%EOF"]) end end end