Автор оригинала: Mike Driscoll.
На моей работе нам иногда нужно писать PDF в память вместо диска, потому что нам нужно объединить на него наложение. Написав в память, мы можем ускорить процесс, поскольку у нас не будет дополнительный шаг записи файла на диск, а затем чтение его снова в память. К сожалению, класс PDFFILEWriter () Pyphdf не предлагает никакой поддержки для извлечения двоичной строки, поэтому вместо этого мы должны вместо этого. Вот пример, где я объединяю два PDF в память:
import pyPdf from StringIO import StringIO #---------------------------------------------------------------------- def mergePDFs(pdfOne, pdfTwo): """ Merge PDFs """ tmp = StringIO() output = pyPdf.PdfFileWriter() pdfOne = pyPdf.PdfFileReader(file(pdfOne, "rb")) for page in range(pdfOne.getNumPages()): output.addPage(pdfOne.getPage(page)) pdfTwo = pyPdf.PdfFileReader(file(pdfTwo, "rb")) for page in range(pdfTwo.getNumPages()): output.addPage(pdfTwo.getPage(page)) output.write(tmp) return tmp.getvalue() if __name__ == "__main__": pdfOne = '/path/to/pdf/one' pdfTwo = '/path/to/pdf/two' pdfObj = mergePDFs(pdfOne, pdfTwo)
Как вы можете видеть, все, что вам нужно сделать, это создать Stringio () Объект, добавьте несколько страниц к PdffileWriter () Объект, а затем напишите данные в свой объект Strundio. Затем для извлечения двоичной строки вы должны позвонить в Shotio GetValue () метод. Просто, верно? Теперь у вас есть файловый объект в памяти, который вы можете использовать для добавления большего количества страниц или наложения OMR Mark On On On On One.
Статьи по Теме
Манипулирование PDFS с Python и Pypdf Pypdf2: || Новая вилка Pypdf