///|
fn pdf_ua_metadata_length(subformat : PdfUASubformat, title : String) -> Int {
  pdf_ua_ascii_length(
    "\n",
  ) +
  pdf_ua_ascii_length("\n") +
  pdf_ua_ascii_length(
    "\n",
  ) +
  pdf_ua_ascii_length(
    "\n",
  ) +
  pdf_ua_ascii_length("") +
  pdf_ua_xml_escaped_utf8_length(title) +
  pdf_ua_ascii_length("\n\n") +
  pdf_ua_ascii_length("\n") +
  pdf_ua_pdfua_marker_length(subformat) +
  pdf_ua_ascii_length(
    "\n\n\n",
  )
}

///|
fn pdf_ua_metadata_bytes(
  subformat : PdfUASubformat,
  title : String,
) -> @core.PdfBytes {
  let output = Array::make(pdf_ua_metadata_length(subformat, title), b'\x00')
  let mut position = pdf_ua_write_ascii(
    output, 0, "\n",
  )
  position = pdf_ua_write_ascii(
    output, position, "\n",
  )
  position = pdf_ua_write_ascii(
    output, position, "\n",
  )
  position = pdf_ua_write_ascii(
    output, position, "\n",
  )
  position = pdf_ua_write_ascii(
    output, position, "",
  )
  position = pdf_ua_write_xml_escaped_utf8(output, position, title)
  position = pdf_ua_write_ascii(
    output, position, "\n\n",
  )
  position = pdf_ua_write_ascii(
    output, position, "\n")
  position = pdf_ua_write_pdfua_marker(output, position, subformat)
  let _ = pdf_ua_write_ascii(
    output, position, "\n\n\n",
  )
  Bytes::from_array(output)
}