2016-06-30 10 views
5

का उपयोग कर मौजूदा पीडीएफ फ़ाइल में पृष्ठ संलग्न करें मैं पृष्ठों को मौजूदा पीडीएफ फ़ाइल में जोड़ना चाहता हूं।पायथन (और 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 को appending संभव है() pdf.close() कॉल करने से पहले, लेकिन मैं पीडीएफ कि पहले से ही बंद कर दिया गया को संलग्न करना चाहते हैं।

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

इस प्रकार आप पीडीएफ-विलय से अंकन अलग।

1

मैंने थोड़ी देर के लिए खोज की लेकिन कार्यक्रम में कहीं और इसे फिर से खोलने के बाद उसी पीडीएफ फ़ाइल में शामिल करने का कोई तरीका नहीं मिला। मैं शब्दकोशों का उपयोग करके समाप्त हुआ, इस तरह से मैं प्रत्येक पीडीएफ के लिए आंकड़ों को शब्दकोश में संग्रहीत कर सकता हूं, जिसे मैं अंत में पीडीएफ में बनाने और लिखने में रूचि रखता हूं। यहां एक उदाहरण दिया गया है:

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() 
संबंधित मुद्दे