MCPcopy Create free account
hub / github.com/pymupdf/PyMuPDF / set_xml_metadata

Method set_xml_metadata

src/__init__.py:7426–7442  ·  view source on GitHub ↗

Store XML document level metadata.

(self, metadata)

Source from the content-addressed store, hash-verified

7424 return doc._update_toc_item(xref, action=action[2:], title=title)
7425
7426 def set_xml_metadata(self, metadata):
7427 """Store XML document level metadata."""
7428 if self.is_closed or self.is_encrypted:
7429 raise ValueError("document closed or encrypted")
7430 pdf = _as_pdf_document(self)
7431 root = mupdf.pdf_dict_get( mupdf.pdf_trailer( pdf), PDF_NAME('Root'))
7432 if not root.m_internal:
7433 RAISEPY( MSG_BAD_PDFROOT, JM_Exc_FileDataError)
7434 res = mupdf.fz_new_buffer_from_copied_data( metadata.encode('utf-8'))
7435 xml = mupdf.pdf_dict_get( root, PDF_NAME('Metadata'))
7436 if xml.m_internal:
7437 JM_update_stream( pdf, xml, res, 0)
7438 else:
7439 xml = mupdf.pdf_add_stream( pdf, res, mupdf.PdfObj(), 0)
7440 mupdf.pdf_dict_put( xml, PDF_NAME('Type'), PDF_NAME('Metadata'))
7441 mupdf.pdf_dict_put( xml, PDF_NAME('Subtype'), PDF_NAME('XML'))
7442 mupdf.pdf_dict_put( root, PDF_NAME('Metadata'), xml)
7443
7444 def subset_fonts(doc: 'Document', verbose: bool = False, fallback: bool = False) -> OptInt:
7445 """Build font subsets in a PDF.

Callers 1

Calls 5

_as_pdf_documentFunction · 0.85
PDF_NAMEFunction · 0.85
RAISEPYFunction · 0.85
JM_update_streamFunction · 0.85
pdf_trailerMethod · 0.80

Tested by 1