Imagemagick 使用Sphinx扩展将svg转换为pdf

Imagemagick 使用Sphinx扩展将svg转换为pdf,imagemagick,latex,python-sphinx,imagemagick-convert,pdflatex,Imagemagick,Latex,Python Sphinx,Imagemagick Convert,Pdflatex,我的公司正在使用斯芬克斯为我们的产品制作手册。我们的产品附带PDF和HTML文档。我们使用Windows作为唯一的开发环境 一个必要的要求是从相同的源(*.rst文件)生成两种格式 旧式文档使用广泛的SVG图像,但sphinx构建格式latex不支持\includegraphics{}环境中的SVG文件 现在我找到了有前途的Sphinx扩展Sphinx.ext.imgconverter,并将其包含到我的conf.py中 extensions = [ 'sphinx.ext.imgmath

我的公司正在使用斯芬克斯为我们的产品制作手册。我们的产品附带PDF和HTML文档。我们使用Windows作为唯一的开发环境

一个必要的要求是从相同的源(*.rst文件)生成两种格式

旧式文档使用广泛的SVG图像,但sphinx构建格式
latex
不支持
\includegraphics{}
环境中的SVG文件

现在我找到了有前途的Sphinx扩展
Sphinx.ext.imgconverter
,并将其包含到我的
conf.py

extensions = [
    'sphinx.ext.imgmath',
    'sphinx.ext.ifconfig',
    'sphinx.ext.imgconverter'
]
如果我正在构建LaTeX,希望能将所有SVG文件转换为PDF文件。不幸的是,扩展的文档非常短,并且没有工作示例

我们的rst文件的内容基本上是:

.. image:: Image.*
   :width: 100px
Sphinx应该自行决定是否使用svg或pdf替换星号,具体取决于构建html/pdf。这是我从以前的帖子中得到的信息:

  • 但不知怎么的,我无法产生我的乳胶。

    而是发出以下警告:

    WARNING: no matching candidate for image URI u'Image.*'
    
    但只有当我想在HTML的情况下构建LaTeX时,才没有警告

    我必须安装ImageMagick吗?还是有什么问题?斯芬克斯怎么知道在哪里搜索ImageMagick

    更新

    我刚刚将Sphinx更新为1.7.2版。它仍然不起作用。由于无法安装ImageMagick,我临时从我的
    conf.py
    中删除了扩展名
    sphinx.ext.imgconverter
    ,以测试手动解决方案。我使用inkscape手动将所有图像转换为pdf/png

    现在,如果使用
    makelatex
    编译,我会收到以下警告

    WARNING: a suitable image for latex builder not found: ['image/svg+xml']
    
    但是在
    目录和
    build/latex
    目录中肯定都有手动转换的图像(pdf、png)

    我的LaTeX文件被编译为如下内容:

    \noindent\sphinxincludegraphics[width=100\sphinxpxdimen]{{Image}.*}
    
    我无法用pdflatex编译它

    LaTeX Error: Unknown graphics extension: .*.
    
    my
    conf.py
    中的LaTeX Builder是否有一些设置用于拍摄转换后的图像

    如果在我的
    conf.py
    中包含以下行,则会发生意外情况:

    from sphinx.builders.latex import LaTeXBuilder
    LaTeXBuilder.supported_image_types = ['image/png', 'image/pdf','image/svg+xml' ]
    
    我的LaTeX文件的输出现在包含以下行:

    \noindent\sphinxincludegraphics[width=100\sphinxpxdimen]{{Image}.svg}
    
    如果我从
    支持的图像类型中删除类型
    image/svg+xml
    ,我会再次遇到上一个错误。我的印象是,
    sphinx build
    在错误的位置查找转换后的图像。但这只是一个想法

  • 我怀疑这个错误与此有关。它在Sphinx1.7中得到了修复,这表明Sphinx1.7的版本已安装。升级至Sphinx 1.7或更高版本提示:始终搜索源代码存储库以获取帮助
  • 从以下文件中:

    在内部,此扩展用于转换图像

    这意味着它必须安装在您的系统路径中


  • 谢谢你的建议。我已经安装了sphinx build 1.7.0。我将尝试更新。请查看这将有助于将动态svg转换为pdf,以便与Sphinx的latex builder一起使用。它基于通过inkscape或rsvg convert添加转换