@@ -455,6 +455,7 @@ def print_figure(self, filename, dpi=None, facecolor='w', edgecolor='w',
455455 # render the printed figure
456456 self .draw ()
457457
458+ printfunc = None
458459 if not is_string_like (filename ):
459460 # assume png and write to fileobject
460461 self .renderer ._renderer .write_png (filename )
@@ -479,23 +480,33 @@ def print_figure(self, filename, dpi=None, facecolor='w', edgecolor='w',
479480 elif ext .find ('svg' )>= 0 :
480481 from backend_svg import FigureCanvasSVG
481482 svg = self .switch_backends (FigureCanvasSVG )
482- svg .print_figure (filename , dpi , facecolor , edgecolor ,
483- orientation , ** kwargs )
483+ printfunc = svg .print_figure
484484 elif ext .find ('ps' )>= 0 or ext .find ('ep' )>= 0 :
485485 from backend_ps import FigureCanvasPS # lazy import
486486 ps = self .switch_backends (FigureCanvasPS )
487- ps .print_figure (filename , dpi , facecolor , edgecolor ,
488- orientation , ** kwargs )
487+ printfunc = ps .print_figure
489488 elif ext .find ('pdf' )>= 0 :
490489 from backend_pdf import FigureCanvasPdf
491490 pdf = self .switch_backends (FigureCanvasPdf )
492- pdf .print_figure (filename , dpi , facecolor , edgecolor ,
493- orientation , ** kwargs )
491+ printfunc = pdf .print_figure
494492 else :
495493 raise IOError ('Do not know know to handle extension *%s' % ext )
496494
495+ if printfunc is not None :
496+ try :
497+ printfunc (filename , dpi , facecolor , edgecolor , orientation , ** kwargs )
498+ except :
499+ # restore the original figure properties
500+ self .figure .dpi .set (origDPI )
501+ self .figure .set_facecolor (origfacecolor )
502+ self .figure .set_edgecolor (origedgecolor )
503+ self .figure .set_canvas (self )
504+ raise
505+
497506 # restore the original figure properties
498507 self .figure .dpi .set (origDPI )
499508 self .figure .set_facecolor (origfacecolor )
500509 self .figure .set_edgecolor (origedgecolor )
501510 self .figure .set_canvas (self )
511+
512+
0 commit comments