2016-06-30 6 views
5

Chciałbym dołączyć strony do istniejącego pliku pdf.dołączyć stronę do istniejącego pliku pdf przy użyciu Pythona (i matplotlib?)

Aktualnie używam pdfpages matplotlib. jednak po zamknięciu pliku zapisanie kolejnej cyfry powoduje zastąpienie istniejącego pliku zamiast dołączania.

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

wiem Dołączanie jest możliwe poprzez wielokrotne wywołania do pdf.savefig() przed wywołaniem pdf.close(), ale chciałbym, aby dołączyć do pdf, który został już zamknięty.

Zostaną również docenione alternatywy dla matplotlib.

Odpowiedz

1

Możesz użyć do tego celu pyPdf.

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

example taken from here

Tym samym należy odłączyć wykreślanie z pdf-przejmowanego.

1

Szukałem przez jakiś czas, ale nie mogłem znaleźć sposobu na dołączenie do tego samego pliku pdf po ponownym otwarciu go w innym miejscu w programie. Skończyło się na używaniu słowników, dzięki czemu mogę przechowywać dane w słowniku dla każdego pliku pdf, który jestem zainteresowany tworzeniem i zapisywać je w plikach PDF na końcu. Oto przykład:

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() 
Powiązane problemy