///|
/// Return cpdf-style XMP metadata report fields as JSON.
pub fn PdfDocument::xmp_info_json(
self : PdfDocument,
) -> Json raise @core.PdfError {
let output : Map[String, Json] = Map([])
output.set(
"Subformats",
pdf_metadata_json_string_array(self.determine_subformats()),
)
match self.language() {
Some(language) =>
output.set("Language", Json::string(@utf8.decode_lossy(language)))
None => output.set("Language", Json::null())
}
match self.metadata() {
Some(metadata) =>
for field in pdf_metadata_xmp_report_fields {
pdf_metadata_add_xmp_report_field(output, metadata, field)
}
None => ()
}
Json::object(output)
}
///|
/// Return cpdf-style XMP metadata report fields as UTF-8 JSON bytes.
pub fn PdfDocument::xmp_info_json_blob(
self : PdfDocument,
) -> @core.PdfBytes raise @core.PdfError {
@utf8.encode(self.xmp_info_json().stringify())
}
///|
/// Return cpdf-style XMP metadata report fields as stdout-style UTF-8 bytes.
pub fn PdfDocument::xmp_info_blob(
self : PdfDocument,
) -> @core.PdfBytes raise @core.PdfError {
let output : Array[String] = []
output.push("Subformats: ")
output.push(pdf_metadata_combine_with_commas(self.determine_subformats()))
output.push("\nLanguage: ")
match self.language() {
Some(language) => {
output.push("\"")
output.push(@utf8.decode_lossy(language))
output.push("\"")
}
None => ()
}
output.push("\n")
match self.metadata() {
Some(metadata) => {
let document = pdf_metadata_xmltree_of_bytes(metadata) catch {
_ => return @utf8.encode(output.join(""))
}
for field in pdf_metadata_xmp_report_fields {
pdf_metadata_add_xmp_report_line(output, document.tree, field)
}
}
None => ()
}
@utf8.encode(output.join(""))
}