@@ -168,26 +168,28 @@ def _metadata_to_str(key, value):
168168
169169def make_pdf_to_png_converter ():
170170 """Return a function that converts a pdf file to a png file."""
171- if shutil .which ("pdftocairo" ):
172- def cairo_convert (pdffile , pngfile , dpi ):
173- cmd = ["pdftocairo" , "-singlefile" , "-png" , "-r" , "%d" % dpi ,
174- pdffile , os .path .splitext (pngfile )[0 ]]
175- subprocess .check_output (cmd , stderr = subprocess .STDOUT )
176- return cairo_convert
171+ try :
172+ mpl ._get_executable_info ("pdftocairo" )
173+ except mpl .ExecutableNotFoundError :
174+ pass
175+ else :
176+ return lambda pdffile , pngfile , dpi : subprocess .check_output (
177+ ["pdftocairo" , "-singlefile" , "-transp" , "-png" , "-r" , "%d" % dpi ,
178+ pdffile , os .path .splitext (pngfile )[0 ]],
179+ stderr = subprocess .STDOUT )
177180 try :
178181 gs_info = mpl ._get_executable_info ("gs" )
179182 except mpl .ExecutableNotFoundError :
180183 pass
181184 else :
182- def gs_convert (pdffile , pngfile , dpi ):
183- cmd = [gs_info .executable ,
184- '-dQUIET' , '-dSAFER' , '-dBATCH' , '-dNOPAUSE' , '-dNOPROMPT' ,
185- '-dUseCIEColor' , '-dTextAlphaBits=4' ,
186- '-dGraphicsAlphaBits=4' , '-dDOINTERPOLATE' ,
187- '-sDEVICE=png16m' , '-sOutputFile=%s' % pngfile ,
188- '-r%d' % dpi , pdffile ]
189- subprocess .check_output (cmd , stderr = subprocess .STDOUT )
190- return gs_convert
185+ return lambda pdffile , pngfile , dpi : subprocess .check_output (
186+ [gs_info .executable ,
187+ '-dQUIET' , '-dSAFER' , '-dBATCH' , '-dNOPAUSE' , '-dNOPROMPT' ,
188+ '-dUseCIEColor' , '-dTextAlphaBits=4' ,
189+ '-dGraphicsAlphaBits=4' , '-dDOINTERPOLATE' ,
190+ '-sDEVICE=pngalpha' , '-sOutputFile=%s' % pngfile ,
191+ '-r%d' % dpi , pdffile ],
192+ stderr = subprocess .STDOUT )
191193 raise RuntimeError ("No suitable pdf to png renderer found." )
192194
193195
0 commit comments