mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #4833 from tk0miya/add_docs_for_ImageConverter
doc: Add ImageConverter to utils
This commit is contained in:
commit
ed3bc1a87e
@ -1,7 +1,9 @@
|
|||||||
.. highlight:: rest
|
.. highlight:: rest
|
||||||
|
|
||||||
:mod:`sphinx.ext.imgconverter` -- Convert images to appropriate format for builders
|
.. _sphinx.ext.imgconverter:
|
||||||
===================================================================================
|
|
||||||
|
:mod:`sphinx.ext.imgconverter` -- A reference implementation for image converter using Imagemagick
|
||||||
|
==================================================================================================
|
||||||
|
|
||||||
.. module:: sphinx.ext.imgconverter
|
.. module:: sphinx.ext.imgconverter
|
||||||
:synopsis: Convert images to appropriate format for builders
|
:synopsis: Convert images to appropriate format for builders
|
||||||
@ -16,6 +18,12 @@ Internally, this extension uses Imagemagick_ to convert images.
|
|||||||
|
|
||||||
.. _Imagemagick: https://www.imagemagick.org/script/index.php
|
.. _Imagemagick: https://www.imagemagick.org/script/index.php
|
||||||
|
|
||||||
|
.. note:: Imagemagick rasterizes a SVG image on conversion. As a result, the image
|
||||||
|
becomes not scalable. To avoid that, please use other image converters
|
||||||
|
like sphinxcontrib-svg2pdfconverter_ (which uses Inkscape or rsvg-convert).
|
||||||
|
|
||||||
|
.. _sphinxcontrib-svg2pdfconverter: https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -17,3 +17,6 @@ components (e.g. :class:`.Config`, :class:`.BuildEnvironment` and so on) easily.
|
|||||||
|
|
||||||
.. autoclass:: sphinx.util.docutils.SphinxDirective
|
.. autoclass:: sphinx.util.docutils.SphinxDirective
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
.. autoclass:: sphinx.transforms.post_transforms.images.ImageConverter
|
||||||
|
:members:
|
||||||
|
@ -165,19 +165,37 @@ def get_filename_for(filename, mimetype):
|
|||||||
|
|
||||||
|
|
||||||
class ImageConverter(BaseImageConverter):
|
class ImageConverter(BaseImageConverter):
|
||||||
"""A base class images converter.
|
"""A base class for image converters.
|
||||||
|
|
||||||
The concrete image converters should derive this class and
|
An image converter is kind of Docutils transform module. It is used to
|
||||||
overrides the following methods and attributes:
|
convert image files which does not supported by builder to appropriate
|
||||||
|
format for that builder.
|
||||||
|
|
||||||
* default_priority (if needed)
|
For example, :py:class:`LaTeX builder <.LaTeXBuilder>` supports PDF,
|
||||||
* conversion_rules
|
PNG and JPEG as image formats. However it does not support SVG images.
|
||||||
* is_available()
|
For such case, to use image converters allows to embed these
|
||||||
* convert()
|
unsupported images into the document. One of image converters;
|
||||||
|
:ref:`sphinx.ext. imgconverter <sphinx.ext.imgconverter>` can convert
|
||||||
|
a SVG image to PNG format using Imagemagick internally.
|
||||||
|
|
||||||
|
There are three steps to make your custom image converter:
|
||||||
|
|
||||||
|
1. Make a subclass of ``ImageConverter`` class
|
||||||
|
2. Override ``conversion_rules``, ``is_available()`` and ``convert()``
|
||||||
|
3. Register your image converter to Sphinx using
|
||||||
|
:py:meth:`.Sphinx.add_post_transform`
|
||||||
"""
|
"""
|
||||||
default_priority = 200
|
default_priority = 200
|
||||||
|
|
||||||
#: A conversion rules between two mimetypes which this converters supports
|
#: A conversion rules the image converter supports.
|
||||||
|
#: It is represented as a list of pair of source image format (mimetype) and
|
||||||
|
#: destination one::
|
||||||
|
#:
|
||||||
|
#: conversion_rules = [
|
||||||
|
#: ('image/svg+xml', 'image/png'),
|
||||||
|
#: ('image/gif', 'image/png'),
|
||||||
|
#: ('application/pdf', 'image/png'),
|
||||||
|
#: ]
|
||||||
conversion_rules = [] # type: List[Tuple[unicode, unicode]]
|
conversion_rules = [] # type: List[Tuple[unicode, unicode]]
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -216,7 +234,7 @@ class ImageConverter(BaseImageConverter):
|
|||||||
|
|
||||||
def is_available(self):
|
def is_available(self):
|
||||||
# type: () -> bool
|
# type: () -> bool
|
||||||
"""Confirms the converter is available or not."""
|
"""Return the image converter is available or not."""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def guess_mimetypes(self, node):
|
def guess_mimetypes(self, node):
|
||||||
@ -255,7 +273,11 @@ class ImageConverter(BaseImageConverter):
|
|||||||
|
|
||||||
def convert(self, _from, _to):
|
def convert(self, _from, _to):
|
||||||
# type: (unicode, unicode) -> bool
|
# type: (unicode, unicode) -> bool
|
||||||
"""Converts the image to expected one."""
|
"""Convert a image file to expected format.
|
||||||
|
|
||||||
|
*_from* is a path for source image file, and *_to* is a path for
|
||||||
|
destination file.
|
||||||
|
"""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user