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

Method _embfile_upd

src/__init__.py:3715–3749  ·  view source on GitHub ↗
(self, idx, buffer_=None, filename=None, ufilename=None, desc=None)

Source from the content-addressed store, hash-verified

3713 namelist.append(val)
3714
3715 def _embfile_upd(self, idx, buffer_=None, filename=None, ufilename=None, desc=None):
3716 pdf = _as_pdf_document(self)
3717 xref = 0
3718 names = mupdf.pdf_dict_getl(
3719 mupdf.pdf_trailer(pdf),
3720 PDF_NAME('Root'),
3721 PDF_NAME('Names'),
3722 PDF_NAME('EmbeddedFiles'),
3723 PDF_NAME('Names'),
3724 )
3725 entry = mupdf.pdf_array_get(names, 2*idx+1)
3726
3727 filespec = mupdf.pdf_dict_getl(entry, PDF_NAME('EF'), PDF_NAME('F'))
3728 if not filespec.m_internal:
3729 RAISEPY( "bad PDF: no /EF object", JM_Exc_FileDataError)
3730 res = JM_BufferFromBytes(buffer_)
3731 if buffer_ and buffer_.m_internal and not res.m_internal:
3732 raise TypeError( MSG_BAD_BUFFER)
3733 if res.m_internal and buffer_ and buffer_.m_internal:
3734 JM_update_stream(pdf, filespec, res, 1)
3735 # adjust /DL and /Size parameters
3736 len, _ = mupdf.fz_buffer_storage(res)
3737 l = mupdf.pdf_new_int(len)
3738 mupdf.pdf_dict_put(filespec, PDF_NAME('DL'), l)
3739 mupdf.pdf_dict_putl(filespec, l, PDF_NAME('Params'), PDF_NAME('Size'))
3740 xref = mupdf.pdf_to_num(filespec)
3741 if filename:
3742 mupdf.pdf_dict_put_text_string(entry, PDF_NAME('F'), filename)
3743
3744 if ufilename:
3745 mupdf.pdf_dict_put_text_string(entry, PDF_NAME('UF'), ufilename)
3746
3747 if desc:
3748 mupdf.pdf_dict_put_text_string(entry, PDF_NAME('Desc'), desc)
3749 return xref
3750
3751 def _extend_toc_items(self, items):
3752 """Add color info to all items of an extended TOC list."""

Callers 1

embfile_updMethod · 0.95

Calls 6

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

Tested by

no test coverage detected