我目前正在为 pdf 编辑器应用程序进行简单的概念验证。该示例应该是一个简化的 Python 脚本,展示了我们如何使用 pdfrw 库来编辑包含表单的 PDF 文件。
所以,这就是问题所在。我对将编辑后的 PDF 写入文件不感兴趣。 这个想法是文件打开和关闭很可能由外部代码处理,所以我希望我的文件中的所有编辑都在内存中完成。我不想将编辑后的文件流写入本地文件。
让我具体说明一下我的意思。我目前有一段这样的代码:
class FormFiller:
def __fill_pdf__(input_pdf_filestream : bytes, data_dict : dict):
template_pdf : pdfrw.PdfReader = pdfrw.PdfReader(input_pdf_filestream)
# <some editing magic here>
return template_pdf
def fillForm(self,mapper : FieldMapper):
value_mapping : dict = mapper.getValues()
filled_pdf : pdfrw.PdfReader = self.__fill_pdf__(self.filesteam, value_mapping)
#<this point is crucial>
def __init__(self, filestream : bytes):
self.filesteam : bytes = filestream
因此,如您所见,FormFiller 构造函数接收一个字节数组。事实上,它是一个io.BytesIO
对象。该template_pdf
变量使用PdfReader
来自 pdfrw 库的对象。现在,当我们到达#<this point is crucial>
标记时,我有一个filled_pdf
变量,它是一个 PdfReader 对象。我想将它转换为一个文件流(一个字节数组,或者一个 io.BytesIO 对象,如果你愿意的话),并以这种形式返回它。我不想将其写入文件。但是,pdfrw (pdfrw.PdfWriter) 提供的编写器类不允许这样的操作。它只提供一种write(<filename>)
方法,将 PdfReader 对象保存到 pdf 输出文件中。
我应该如何处理这个?你推荐一个解决方法吗?或者也许我应该使用一个完全不同的库来完成这个?
请帮忙 :-(