Extract a separate function from tostream()

This commit is contained in:
mara004 2024-08-27 22:42:39 +02:00
parent 316629fa40
commit 8aca925ee3

View file

@ -1070,12 +1070,7 @@ class pdfdoc(object):
if iccp is not None: if iccp is not None:
self.writer.addobj(iccpdict) self.writer.addobj(iccpdict)
def tostring(self): def todoc(self):
stream = BytesIO()
self.tostream(stream)
return stream.getvalue()
def tostream(self, outputstream=None, return_engine_doc=False):
if self.engine == Engine.pikepdf: if self.engine == Engine.pikepdf:
PdfArray = pikepdf.Array PdfArray = pikepdf.Array
PdfDict = pikepdf.Dictionary PdfDict = pikepdf.Dictionary
@ -1267,12 +1262,16 @@ class pdfdoc(object):
self.writer.addobj(metadata) self.writer.addobj(metadata)
self.writer.addobj(iccstream) self.writer.addobj(iccstream)
if return_engine_doc:
return self.writer, self.output_version return self.writer, self.output_version
# now write out the PDF def tostring(self):
if outputstream is None: stream = BytesIO()
raise TypeError("pdfdoc.tostream() requires outputstream unless return_engine_doc is True.") self.tostream(stream)
return stream.getvalue()
def tostream(self, outputstream):
# write out the PDF
self.todoc() # finalize self.writer
if self.engine == Engine.pikepdf: if self.engine == Engine.pikepdf:
kwargs = {} kwargs = {}
if pikepdf.__version__ >= "6.2.0": if pikepdf.__version__ >= "6.2.0":
@ -1281,6 +1280,7 @@ class pdfdoc(object):
outputstream, min_version=self.output_version, linearize=True, **kwargs outputstream, min_version=self.output_version, linearize=True, **kwargs
) )
elif self.engine == Engine.pdfrw: elif self.engine == Engine.pdfrw:
from pdfrw import PdfName, PdfArray
self.writer.trailer.Info = self.writer.docinfo self.writer.trailer.Info = self.writer.docinfo
# setting the version attribute of the pdfrw PdfWriter object will # setting the version attribute of the pdfrw PdfWriter object will
# influence the behaviour of the write() function # influence the behaviour of the write() function
@ -2803,11 +2803,11 @@ def convert(*images, **kwargs):
) )
if kwargs["outputstream"]: if kwargs["outputstream"]:
pdf.tostream(outputstream=kwargs["outputstream"]) pdf.tostream(kwargs["outputstream"])
return return
if kwargs["return_engine_doc"]: if kwargs["return_engine_doc"]:
return pdf.tostream(return_engine_doc=True) return pdf.todoc()
return pdf.tostring() return pdf.tostring()