sphinx-contrib / plantuml

BSD 2-Clause "Simplified" License
115 stars 42 forks source link

SVG encoding error #52

Closed justwillim closed 3 years ago

justwillim commented 3 years ago

I'm trying to add a simple PlantUML svg demo using this contrib

uml code:

.. uml::

   Alice -> Bob: Hi!
   Alice <- Bob: How are you?

plantuml version:

PlantUML version 1.2021.3 (Tue Mar 23 00:53:19 HKT 2021)
(MIT source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US

PLANTUML_LIMIT_SIZE: 4096

Dot version: dot - graphviz version 2.40.1 (20161225.0304)
Installation seems OK. File generation OK

error log as following:

# Sphinx version: 3.5.1
# Python version: 3.6.6 (CPython)
# Docutils version: 0.14 
# Jinja2 version: 2.10
# Last messages:
#   done
#   
#   preparing documents...
#   
#   done
#   
#   writing output... [ 50%] index
#   
#   writing output... [100%] interface
#   
# Loaded extensions:
#   sphinx.ext.mathjax (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.2) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (1.0.3) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.4) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.3) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.10) from /home/william/anaconda3/lib/python3.6/site-packages/alabaster/__init__.py
#   sphinx.ext.autodoc.type_comment (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/autodoc/type_comment.py
#   sphinx.ext.autodoc (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/autodoc/__init__.py
#   sphinx.ext.doctest (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/doctest.py
#   sphinx.ext.todo (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/todo.py
#   sphinx.ext.imgmath (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/imgmath.py
#   sphinx.ext.viewcode (3.5.1) from /home/william/anaconda3/lib/python3.6/site-packages/sphinx/ext/viewcode.py
#   m2r2 (0.2.7) from /home/william/anaconda3/lib/python3.6/site-packages/m2r2.py
#   sphinxcontrib.plantuml (unknown version) from /home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/plantuml.py
Traceback (most recent call last):
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/application.py", line 352, in build
    self.builder.build_update()
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/builders/__init__.py", line 298, in build_update
    len(to_build))
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/builders/__init__.py", line 360, in build
    self.write(docnames, list(updated_docnames), method)
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/builders/__init__.py", line 534, in write
    self._write_serial(sorted(docnames))
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/builders/__init__.py", line 544, in _write_serial
    self.write_doc(docname, doctree)
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/builders/html/__init__.py", line 605, in write_doc
    self.docwriter.write(doctree, destination)
  File "/home/william/anaconda3/lib/python3.6/site-packages/docutils/writers/__init__.py", line 80, in write
    self.translate()
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/writers/html.py", line 71, in translate
    self.document.walkabout(visitor)
  File "/home/william/anaconda3/lib/python3.6/site-packages/docutils/nodes.py", line 174, in walkabout
    if child.walkabout(visitor):
  File "/home/william/anaconda3/lib/python3.6/site-packages/docutils/nodes.py", line 174, in walkabout
    if child.walkabout(visitor):
  File "/home/william/anaconda3/lib/python3.6/site-packages/docutils/nodes.py", line 166, in walkabout
    visitor.dispatch_visit(self)
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinx/util/docutils.py", line 468, in dispatch_visit
    method(node)
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/plantuml.py", line 514, in html_visit_plantuml
    self.body.append(gettag(self, fnames, node))
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/plantuml.py", line 452, in _get_svg_tag
    self.encode(refname), _get_svg_style(outfname) or ''),
  File "/home/william/anaconda3/lib/python3.6/site-packages/sphinxcontrib/plantuml.py", line 430, in _get_svg_style
    for l in f:
  File "/home/william/anaconda3/lib/python3.6/codecs.py", line 713, in __next__
    return next(self.reader)
  File "/home/william/anaconda3/lib/python3.6/codecs.py", line 644, in __next__
    line = self.readline()
  File "/home/william/anaconda3/lib/python3.6/codecs.py", line 557, in readline
    data = self.read(readsize, firstline=True)
  File "/home/william/anaconda3/lib/python3.6/codecs.py", line 503, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
yuja commented 3 years ago

Can you check the content of the svg file?

plantuml.py expects a UTF-8-encoded svg file. I don't know if there's a way for plantuml to generate svg file of latin-1 for example, but If the file starts with <?xml version="1.0" encoding="UTF-8", the content must be decodable as UTF-8.

justwillim commented 3 years ago

The SVG file seems generated as a png file, the .svg file is start with (0x89)�PNG

justwillim commented 3 years ago

I finally found the bug, is due to wrong plantuml bash file. Sorry for interruption.

dthauvin commented 1 year ago

Hi @justwillim can you share with us the bad configuration . and what was your action to solve the issue ? thanks a lot