Skip to content

Commit

Permalink
Correctly embed fonts in generated pdf
Browse files Browse the repository at this point in the history
  • Loading branch information
Alberto Sartori committed Aug 7, 2024
1 parent 09f9d13 commit b915df5
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions sphinxcontrib/plantuml.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ def _split_cmdargs(args):

_ARGS_BY_FILEFORMAT = {
'eps': ['-teps'],
'eps:text': ['-teps:text'],
'png': [],
'svg': ['-tsvg'],
'txt': ['-ttxt'],
Expand All @@ -228,12 +229,14 @@ def generate_plantuml_args(self, node, fileformat):
return args


def render_plantuml(self, node, fileformat):
def render_plantuml(self, node, fileformat, plantuml_type=None):
if not plantuml_type:
plantuml_type = fileformat
refname, outfname = generate_name(self, node, fileformat)
if os.path.exists(outfname):
return refname, outfname # don't regenerate

cachefname = self.builder.plantuml_builder.render(node, fileformat)
cachefname = self.builder.plantuml_builder.render(node, fileformat, plantuml_type)
ensuredir(os.path.dirname(outfname))
# TODO: optionally do symlink/link
shutil.copyfile(cachefname, outfname)
Expand Down Expand Up @@ -285,7 +288,7 @@ def __init__(self, builder):
elif builder.format == 'latex':
fmt = builder.config.plantuml_latex_output_format
if fmt != 'none':
fileformat, _postproc = _lookup_latex_format(fmt)
fileformat, _postproc, _plantuml_type = _lookup_latex_format(fmt)
self.image_formats = [fileformat]

self._known_keys = set()
Expand Down Expand Up @@ -366,7 +369,7 @@ def _render_files(self, keys, fileformat):
else:
raise PlantUmlError('error while running plantuml\n\n%s' % serr)

def render(self, node, fileformat):
def render(self, node, fileformat, plantuml_type):
key = hash_plantuml_node(node)
outdir = os.path.join(self.cache_dir, key[:2])
basename = '%s.%s' % (key, fileformat)
Expand All @@ -382,7 +385,7 @@ def render(self, node, fileformat):
) as f:
try:
p = subprocess.Popen(
generate_plantuml_args(self, node, fileformat),
generate_plantuml_args(self, node, plantuml_type),
stdout=f,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
Expand Down Expand Up @@ -615,10 +618,10 @@ def _convert_eps_to_pdf(self, refname, fname):


_KNOWN_LATEX_FORMATS = {
'eps': ('eps', lambda self, refname, fname: (refname, fname)),
'pdf': ('eps', _convert_eps_to_pdf),
'png': ('png', lambda self, refname, fname: (refname, fname)),
'tikz': ('latex', lambda self, refname, fname: (refname, fname)),
'eps': ('eps', 'eps', lambda self, refname, fname: (refname, fname)),
'pdf': ('eps', 'eps:text', _convert_eps_to_pdf),
'png': ('png','png', lambda self, refname, fname: (refname, fname)),
'tikz': ('latex', 'latex', lambda self, refname, fname: (refname, fname)),
}


Expand Down Expand Up @@ -678,8 +681,8 @@ def latex_visit_plantuml(self, node):
if fmt == 'none':
raise nodes.SkipNode
try:
fileformat, postproc = _lookup_latex_format(fmt)
refname, outfname = render_plantuml(self, node, fileformat)
fileformat, plantuml_type, postproc = _lookup_latex_format(fmt)
refname, outfname = render_plantuml(self, node, fileformat, plantuml_type)
refname, outfname = postproc(self, refname, outfname)
except PlantUmlError as err:
logger.warning(str(err), location=node, type='plantuml')
Expand Down

0 comments on commit b915df5

Please sign in to comment.