2016-06-30 2 views
5

Я хотел бы добавить страницы в существующий файл pdf.Добавить страницу в существующий файл pdf, используя python (и matplotlib?)

В настоящее время я использую matplotlib pdfpages. однако, как только файл закрыт, сохранение в нем другой цифры перезаписывает существующий файл, а не добавляет его.

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

Я знаю, что это возможно Добавление данных с помощью нескольких вызовов в pdf.savefig() перед вызовом pdf.close(), но я хотел бы добавить к PDF, который уже был закрыт.

Оцените также альтернативы matplotlib.

ответ

1

Для этого вы можете использовать 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

Таким образом отсоединении заговоры от PDF-слияния.

1

Я искал вокруг какое-то время, но не смог найти способ добавить к тому же файлу PDF после повторного открытия его в другом месте программы. Я закончил тем, что использовал словари, таким образом, я могу хранить цифры в словаре для каждого pdf. Мне интересно создавать и записывать их в pdf-файлы в конце. Вот пример:

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() 
Смежные вопросы