2016-06-30 52 views
5

Mevcut bir pdf dosyasına sayfa eklemek istiyorum.python (ve matplotlib?) Kullanarak varolan pdf dosyasına sayfa ekleme

Şu anda matplotlib pdfpages kullanıyorum. ancak, dosya kapatıldıktan sonra, başka bir rakamın kaydedilmesi, varolan dosyanın üzerine yazmak yerine, üzerine yazılır.

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() 

ben pdf.close() çağırmadan önce() birden çok çağrı pdf.savefig etmek yoluyla ek ilavesi mümkün olduğunu biliyoruz ama zaten kapatıldı pdf eklenecek istiyorum. Matplotlib'e alternatifler de takdir edilecektir.

cevap

1

Bunun için pyPdf kullanmak isteyebilirsiniz.

example taken from here

# Merge two PDFs 
from pyPdf import PdfFileReader, PdfFileWriter 

output = PdfFileWriter() 
pdfOne = PdfFileReader(file("some\path\to\a\PDf", "rb")) 
pdfTwo = PdfFileReader(file("some\other\path\to\a\PDf", "rb")) 

output.addPage(pdfOne.getPage(0)) 
output.addPage(pdfTwo.getPage(0)) 

outputStream = file(r"output.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 

Böylece pdf-birleştirilmesiyle elde komplo ayırmak.

1

Bir süredir araştırdım, ancak programın başka bir yerinde yeniden açtıktan sonra aynı pdf dosyasına eklenecek bir yol bulamadı. Ben sözlükleri kullanarak sona erdi, bu şekilde her pdf için sözlüğe şekilleri saklayabilirim. Sonunda pdfs'e yazmak ve yazmakla ilgileniyorum. İşte bir örnek:

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()