# `PdfElixide.Document.XmpMetadata`
[🔗](https://github.com/r8/pdf_elixide/blob/v0.16.0/lib/pdf_elixide/document/xmp_metadata.ex#L1)

XMP (Extensible Metadata Platform) metadata — the XML-based metadata packet a
PDF may carry in addition to, or instead of, the `/Info` dictionary
(`PdfElixide.Document.Metadata`).

Obtain it with `PdfElixide.Document.xmp_metadata/1`, which answers
`{:ok, nil}` when the document has no XMP packet. Field names drop the XMP namespace prefixes
(`dc:` / `xmp:` / `pdf:` / `xmpRights:`).

## Fields

  * `:title`, `:description` — Dublin Core `dc:title` / `dc:description`.
  * `:creators`, `:subjects` — Dublin Core `dc:creator` / `dc:subject` as lists
    (XMP models these as ordered arrays).
  * `:language`, `:rights`, `:format` — `dc:language` / `dc:rights` /
    `dc:format`.
  * `:creator_tool` — `xmp:CreatorTool`.
  * `:create_date`, `:modify_date`, `:metadata_date` — `xmp:CreateDate` /
    `xmp:ModifyDate` / `xmp:MetadataDate` (raw XMP date strings).
  * `:producer`, `:keywords`, `:pdf_version`, `:trapped` — the `pdf:` namespace.
  * `:rights_usage_terms`, `:rights_marked`, `:rights_web_statement` — the
    `xmpRights:` namespace (`:rights_marked` is a boolean or `nil`).
  * `:custom` — a map of any other `namespace:property => value` pairs.
  * `:raw_xml` — the original XMP packet as a string, or `nil`.

# `t`

```elixir
@type t() :: %PdfElixide.Document.XmpMetadata{
  create_date: String.t() | nil,
  creator_tool: String.t() | nil,
  creators: [String.t()],
  custom: %{required(String.t()) =&gt; String.t()},
  description: String.t() | nil,
  format: String.t() | nil,
  keywords: String.t() | nil,
  language: String.t() | nil,
  metadata_date: String.t() | nil,
  modify_date: String.t() | nil,
  pdf_version: String.t() | nil,
  producer: String.t() | nil,
  raw_xml: String.t() | nil,
  rights: String.t() | nil,
  rights_marked: boolean() | nil,
  rights_usage_terms: String.t() | nil,
  rights_web_statement: String.t() | nil,
  subjects: [String.t()],
  title: String.t() | nil,
  trapped: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
