diff --git a/Charon/filetypes/OpenPackagingConvention.py b/Charon/filetypes/OpenPackagingConvention.py index f5d8e6f..ab33d8b 100644 --- a/Charon/filetypes/OpenPackagingConvention.py +++ b/Charon/filetypes/OpenPackagingConvention.py @@ -47,7 +47,7 @@ def openStream(self, stream: IO[bytes], mime: str = "application/x-opc", mode: OpenMode = OpenMode.ReadOnly) -> None: self._mode = mode self._stream = stream # A copy in case we need to rewind for toByteArray. We should mostly be reading via self._zipfile. - self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED) + self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED, allowZip64=True) self._readContentTypes() # Load or create the content types element. self._readRels() # Load or create the relations. @@ -211,7 +211,7 @@ def toByteArray(self, offset: int = 0, count: int = -1) -> bytes: self._stream.seek(offset) result = self._stream.read(count) - self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED) + self._zipfile = zipfile.ZipFile(self._stream, self._mode.value, compression=zipfile.ZIP_DEFLATED, allowZip64=True) return result ## Adds a new content type to the archive. @@ -350,8 +350,10 @@ def _resizeImage(self, virtual_path: str, width: int, height: int) -> IO[bytes]: def _readRels(self) -> None: assert self._zipfile is not None - self._relations[""] = ET.Element("Relationships", - xmlns="http://schemas.openxmlformats.org/package/2006/relationships") # There must always be a global relationships document. + self._relations[""] = ET.Element( + "Relationships", + xmlns="http://schemas.openxmlformats.org/package/2006/relationships" + ) # There must always be a global relationships document. # Below is some parsing of paths and extensions. # Normally you'd use os.path for this. But this is platform-dependent. @@ -412,8 +414,10 @@ def _readContentTypes(self) -> None: if content_types_element: self._content_types_element = content_types_element if not self._content_types_element: - self._content_types_element = ET.Element("Types", - xmlns="http://schemas.openxmlformats.org/package/2006/content-types") + self._content_types_element = ET.Element( + "Types", + xmlns="http://schemas.openxmlformats.org/package/2006/content-types" + ) # If there is no type for the .rels file, create it. if self._mode != OpenMode.ReadOnly: for type_element in self._content_types_element.iterfind(