Source code for simudo.plot.pdftoppm
import os
import subprocess
import tempfile
from contextlib import contextmanager
__all__ = ['pdftoppm']
@contextmanager
def namedtemp(*args, **kwargs):
with tempfile.NamedTemporaryFile(*args, delete=False, **kwargs) as f:
yield f
try:
os.unlink(f.name)
except FileNotFoundError:
pass
[docs]def pdftoppm(input, output=None, r=300, fmt="png", optipng=True):
if output is None:
output = '{}.{}'.format(input, fmt)
with namedtemp(dir=os.path.dirname(output), suffix='.'+fmt) as f:
tmp = f.name
subprocess.check_call(['pdftoppm', input, tmp.rpartition('.')[0],
'-r', str(r),
'-'+fmt, '-f', '1', '-singlefile'],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
if optipng and fmt=='png':
subprocess.check_call(['optipng', tmp],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
os.rename(tmp, output)