adjunte la página al archivo pdf existente usando python (y matplotlib?)

Me gustaría adjuntar páginas a un archivo pdf existente.

Actualmente, estoy usando matplotlib pdfpages. sin embargo, una vez que se cierra el archivo, al guardar otra figura sobrescribe el archivo existente en lugar de adjuntarlo.

from matplotlib.backends.backend_pdf import PdfPages import matplotlib.pyplot as plt class plotClass(object): def __init__(self): self.PdfFile='c:/test.pdf' self.foo1() self.foo2() def foo1(self): plt.bar(1,1) pdf = PdfPages(self.PdfFile) pdf.savefig() pdf.close() def foo2(self): plt.bar(1,2) pdf = PdfPages(self.PdfFile) pdf.savefig() pdf.close() test=plotClass() 

Sé que es posible adjuntar a través de múltiples llamadas a pdf.savefig () antes de llamar a pdf.close (), pero me gustaría adjuntar a un pdf que ya se ha cerrado.

Alternativas a matplotlib serían apreciadas también.

Es posible que desee utilizar pyPdf para esto.

 # Merge two PDFs from PyPDF2 import PdfFileReader, PdfFileWriter output = PdfFileWriter() pdfOne = PdfFileReader(open("path/to/pdf1.pdf", "rb")) pdfTwo = PdfFileReader(open("path/to/pdf2.pdf", "rb")) output.addPage(pdfOne.getPage(0)) output.addPage(pdfTwo.getPage(0)) outputStream = open(r"output.pdf", "wb") output.write(outputStream) outputStream.close() 

ejemplo tomado de aquí

De este modo, se separa el trazado de la fusión de PDF.

Busqué por un tiempo, pero no pude encontrar una forma de adjuntarlo al mismo archivo pdf después de volver a abrirlo en otra parte del progtwig. Terminé usando diccionarios, de esa manera puedo almacenar las cifras en el diccionario para cada pdf que me interese crear y escribirlas en pdf al final. Aquí hay un ejemplo:

 dd = defaultdict(list) #create a default dictionary plot1 = df1.plot(kind='barh',stacked='True') #create a plot dd[var].append(plot1.figure) #add figure to dictionary #elsewhere in the program plot2 = df2.plot(kind='barh',stacked='True') #another plot dd[var].append(plot2.figure) #add figure to dictionary #at the end print the figures to various reports for var in dd.keys(): pdf = PdfPages(var+.'pdf') #for each dictionary create a new pdf doc for figure in dd[k]: pdf.savefig(figure) #write the figures for that dictionary pdf.close()