微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试创建 DOCX 时出现 Sphinx/PlantUML 错误

如何解决尝试创建 DOCX 时出现 Sphinx/PlantUML 错误

Fedora Box

过去几个月我一直在使用 Sphinx 和 PlantUML,并且已经非常熟悉它们。专门让它通过 HTML、PDF 和 DOCX 构建。但是我遇到了一个问题,希望大家能帮我解决

目前,如果我使用 PlantUML 通过 .jar 文件渲染图像(并将这个新图像作为链接包含在 .rst 文档中),Sphinx 构建这个项目没有问题。 HTML、PDF、DOCX,无所谓。已创建文档,显示图像。

但如果我安装 PlantUML 插件 ([sphinxcontrib-plantuml-0.21.tar.gz][1]),并在 .rst 文档中放入相同的代码(减去 @start/end),Sphinx 只会构建它通过 HTML。那里看起来很完美。但是,如果我通过 DOCX 构建,则会收到 PlantUML 错误。文档将生成,DOCX 文件在那里,但没有图片

有没有其他人有使用 Sphinx、PlantUML 插件并试图让它呈现 DOCX 的经验?

如果通过 DOCX(make docx with https://pypi.org/project/docxbuilder/)构建的错误消息:

警告:忽略未知节点植物

解决方法

按照 (this site) 中的说明,我能够让 DOCX 工作,将以下内容复制到您的 Conf.py 文件中。

# Define setup function in conf.py
def setup(app):
    # Define visit method for plantuml node generated by sphinxcontrib.plantuml
    # https://pypi.org/project/sphinxcontrib-plantuml/
    def docx_visit_plantuml(self,node):
        def get_filepath(self,node):
            from sphinxcontrib import plantuml
            _,filepath = plantuml.render_plantuml(self,node,'png')
            return filepath
        alt = node.get('alt',(node['uml'],None))
        # Docxbuilder provides useful methods. See Docxbuilder API reference.
        self.visit_image_node(node,alt,get_filepath)
    # Add the visit method to Docxbuilder
    import docxbuilder
    translator = docxbuilder.DocxBuilder.default_translator_class
    setattr(translator,'visit_plantuml',docx_visit_plantuml)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。