使用Sphinx Extension将svg转换为pdf

时间:2018-04-18 11:39:31

标签: imagemagick latex python-sphinx imagemagick-convert pdflatex

我的公司正在使用Sphinx为我们的产品创建手册。我们的产品附带PDF和HTML文档。我们使用Windows作为唯一的开发人员环境。

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

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

现在我找到了有希望的Sphinx-Extension sphinx.ext.imgconverter并将其包含在我的conf.py中。

extensions = [
    'sphinx.ext.imgmath',
    'sphinx.ext.ifconfig',
    'sphinx.ext.imgconverter'
]

希望如果我正在构建LaTeX,请将所有SVG文件转换为PDF文件。不幸的是,扩展的文档很短,没有工作示例。

http://www.sphinx-doc.org/en/master/ext/imgconverter.html#module-sphinx.ext.imgconverter

我们的第一个文件的内容基本上是:

.. image:: Image.*
   :width: 100px

如果明星应该由svg或pdf重新定制,取决于构建html / pdf,Sphinx应该自行解决。我从以前的帖子中得到的这些信息:

  1. Using Sphinx docs how can I specify png image formats for HTML builds and pdf image formats for Latex/PDF builds?
  2. 但不知怎的,我无法生成乳胶。 Using Sphinx docs how can I specify png image formats for HTML builds and pdf image formats for Latex/PDF builds?

    而是发出以下警告:

    WARNING: no matching candidate for image URI u'Image.*'
    

    但是,如果我想在HTML的情况下构建LaTeX,则没有警告。

    我是否必须安装ImageMagick或者有什么问题? Sphinx如何知道,在哪里搜索ImageMagick?

    更新

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

    如果我使用make latex进行编译,现在我收到了以下警告。

    WARNING: a suitable image for latex builder not found: ['image/svg+xml']
    

    但是在source目录和build/latex目录中肯定有手动转换的图像(pdf,png)。

    我的LaTeX文件编译为:

    \noindent\sphinxincludegraphics[width=100\sphinxpxdimen]{{Image}.*}
    

    我无法用pdflatex编译它。

    LaTeX Error: Unknown graphics extension: .*.
    

    我的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删除supported_image_types类型,我又收到了上一个错误。我的印象是,sphinx-build在错误的地方寻找转换后的图像。但这只是一个想法。

1 个答案:

答案 0 :(得分:1)

  1. 我怀疑该错误与此issue有关。它在Sphinx 1.7中修复,表明你已经发布了Sphinx< 1.7安装。升级到Sphinx 1.7或更高版本。 提示:始终在源代码存储库中搜索帮助。
  2. 来自sphinx.ext.imgconverter的文档:

      

    在内部,此扩展程序使用Imagemagick转换图片。

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