summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2022-01-04 12:18:04 -0600
committerFederico Mena Quintero <federico@gnome.org>2022-01-04 12:18:04 -0600
commit2b83662cda1943feb43b4a3046c98b11ecaf20a5 (patch)
treead4fc584f66d6370fe447f2f5afc9ffec1a4ddf2
parent51bc6b9265e55d608136e3f2566d0ce93b4b9112 (diff)
downloadlibrsvg-2b83662cda1943feb43b4a3046c98b11ecaf20a5.tar.gz
Initial conversion of rsvg-convert.1 to rsvg-convert.rst
Not everything looks pretty; we'll fix it next. Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/648>
-rw-r--r--rsvg-convert.rst484
1 files changed, 484 insertions, 0 deletions
diff --git a/rsvg-convert.rst b/rsvg-convert.rst
new file mode 100644
index 00000000..1921599b
--- /dev/null
+++ b/rsvg-convert.rst
@@ -0,0 +1,484 @@
+.. rsvg-convert(1):
+
+============
+rsvg-convert
+============
+
+-----------------------------------------------------------------
+Render SVG documents to PNG images, or convert them to PDF or PS.
+-----------------------------------------------------------------
+
+SYNOPSIS
+========
+
+Convert an SVG to PNG at its "natural size" and write it to standard
+output:
+
+ **rsvg-convert** *input.svg* **>** *output.png*
+
+Specify an output filename; the input filename must be the last
+argument:
+
+ **rsvg-convert** **--output=**\ *output.png* *input.svg*
+
+Configure dots-per-inch (DPI), default is 96:
+
+ **rsvg-convert** **--dpi-x=**\ *300* **--dpi-y=**\ *300* *input.svg*
+ **>** *output.png*
+
+Render an SVG at a specific pixel size, scaled proportionally:
+
+ **rsvg-convert** **--width=**\ *1024* **--height=**\ *768*
+ **--keep-aspect-ratio** *input.svg* **>** *output.png*
+
+DESCRIPTION
+===========
+
+**rsvg-convert** renders SVG documents into PNG raster images, or
+converts them to PDF or PS as vector objects. By default
+**rsvg-convert** will render an SVG document to a raster PNG image and
+write it to standard output:
+
+ **rsvg-convert** *input.svg* **>** *output.png*
+
+To select another format, use the **--format** option:
+
+ **rsvg-convert --format=pdf** *input.svg* **>** *output.pdf*
+
+You can use **rsvg-convert** as part of a pipeline; without an argument
+for the input filename it will read the document from standard input:
+
+ **cat** *input.svg* **\|** **rsvg-convert** **>** *output.png*
+
+SPECIFYING THE RENDERED SIZE
+----------------------------
+
+You can use the **--width** and **--height** options to specify the size
+of the output image. Most of the time you should specify
+**--keep-aspect-ratio** to scale the image proportionally; for
+compatibility with old versions this is not the default.
+
+ **rsvg-convert** **--width=**\ *100* **--height=**\ *200*
+ **--keep-aspect-ratio** *input.svg* **>** *output.png*
+
+You can also specify dimensions as CSS lengths, for example **10px** or
+**8.5in**. The unit specifiers supported are as follows:
+
+ == ==========================================
+ px pixels (the unit specifier can be omitted)
+ in inches
+ cm centimeters
+ mm millimeters
+ pt points, 1/72 inch
+ pc picas, 1/6 inch
+ == ==========================================
+
+The following will create a 600*900 pixel PNG, or 2*3 inches at 300
+dots-per-inch:
+
+ **rsvg-convert** **--width=**\ *2in* **--height=**\ *3in*
+ **--keep-aspect-ratio** **--dpi-x=**\ *300* **--dpi-y=**\ *300*
+ *input.svg* **>** *output.png*
+
+This will scale an SVG document to fit in an A4 page and convert it to
+PDF:
+
+ **rsvg-convert** **--format=**\ *pdf* **--width=**\ *210mm*
+ **--height=**\ *297mm* **--keep-aspect-ratio** *input.svg* **>**
+ *output.pdf*
+
+SPECIFYING A PAGE SIZE
+----------------------
+
+By default the size of the output comes from the rendered size, which
+can be specified with the **--width** and **--height** options, but you
+can specify a page size independently of the rendered size with
+**--page-width** and **--page-height**, together with **--top** and
+**--left** to control the position of the rendered image within the
+page.
+
+This will create a PDF with a landscape A4 page, by scaling an SVG
+document to 10*10 cm, and placing it with its top-left corner 5 cm away
+from the top and 8 cm from the left of the page:
+
+ **rsvg-convert** **--format=**\ *pdf* **--page-width=**\ *297mm*
+ **--page-height=**\ *210mm* **--width=**\ *10cm*
+ **--height=**\ *10cm* **--keep-aspect-ratio** **--top=**\ *5cm*
+ **--left=**\ *8cm* *input.svg* **>** *output.pdf*
+
+SPECIFYING A SCALE FACTOR INSTEAD OF A RENDERED SIZE
+----------------------------------------------------
+
+The **--zoom** option lets you scale the natural size of an SVG
+document. For example, if *input.svg* is a document with a declared size
+of 100*200 pixels, then the following command will render it at 250*500
+pixels (zoom 2.5):
+
+ **rsvg-convert** **--zoom=2.5** *input.svg* **>** *output.png*
+
+You can limit the maximum scaled size by specifying the **--width** and
+**--height** options together with **--zoom.** Here, the image will be
+scaled 10x, but limited to 1000*1000 pixels at the most:
+
+ **rsvg-convert** **--zoom=10** **--width=1000** **--height=1000**
+ *input.svg* **>** *output.png*
+
+If you need different scale factors for the horizontal and vertical
+dimensions, use the **--x-zoom** and **--y-zoom** options instead of
+**--zoom.**
+
+CREATING A MULTI-PAGE DOCUMENT
+------------------------------
+
+The "pdf", "ps", and "eps" output formats support multiple pages. These
+can be created by combining multiple input SVG files. For example, this
+PDF file will have three pages:
+
+ **rsvg-convert** **--format=**\ *pdf* *pg1.svg* *pg2.svg* *pg3.svg*
+ **>** *out.pdf*
+
+The size of each page will be computed, separately, as described in the
+**DEFAULT OUTPUT SIZE** section. This may result in a PDF being produced
+with differently-sized pages. If you need to produce a PDF with all
+pages set to exactly the same size, use the **--page-width** and
+**--page-height** options.
+
+For example, the following command creates a three-page PDF out of three
+SVG documents. All the pages are portrait US Letter, and each SVG is
+scaled to fit so that there is a 1in margin around each page:
+
+ **rsvg-convert** **--format=**\ *pdf* **--page-width=**\ *8.5in*
+ **--page-height=**\ *11in* **--width=**\ *6.5in* **--height=**\ *9in*
+ **--keep-aspect-ratio** **--top=**\ *1in* **--left=**\ *1in*
+ *pg1.svg* *pg2.svg* *pg3.svg* **>** *out.pdf*
+
+CONVERSION OF PIXELS BASED ON THE DOTS-PER-INCH
+-----------------------------------------------
+
+**rsvg-convert** uses the **--dpi-x** and **--dpi-y** options to
+configure the dots-per-inch (DPI) by which pixels will be converted
+to/from physical units like inches or centimeters. The default for both
+options is 96 DPI.
+
+Consider this example SVG, which is nominally declared to be 2*3 inches
+in size:
+
+::
+
+ <svg xmlns="http://www.w3.org/2000/svg" width="2in" height="3in">
+ <!-- graphical objects here -->
+ </svg>
+
+The following commands create PNGs of different sizes for the example
+SVG above:
+
+ **rsvg-convert** *two-by-three.svg* **>** *output.png* #### creates a
+ 192*288 pixel PNG
+
+ **rsvg-convert** **--dpi-x=**\ *300* **--dpi-y=**\ *300*
+ *two-by-three.svg* **>** *output.png* #### creates a 600*900 pixel
+ PNG
+
+Note that the final pixel dimensions are rounded up to the nearest
+pixel, to avoid clipping off the right/bottom edges. In the following
+example, **rsvg-convert** will generate a PNG 300x300 pixels in size:
+
+ **rsvg-convert** **--width=**\ *299.5* **--height=**\ *299.4*
+ *input.svg* **>** *output.png* #### outputs 300x300 pixel PNG with a
+ fractionally-scaled image
+
+If you specify dimensions in physical units, they will be multiplied by
+the dots-per-inch (DPI) value to obtain dimensions in pixels. For
+example, this will generate a 96x96 pixel PNG, since it is 1x1 inch at
+the default 96 DPI:
+
+ **rsvg-convert** **--width=**\ *1in* **--height=**\ *1in* *input.svg*
+ **>** *output.png* #### outputs 96x96 pixel PNG
+
+Correspondingly, this will generate a 300x300 pixel PNG, since it is 1x1
+inch at 300 DPI:
+
+ **rsvg-convert** **--width=**\ *1in* **--height=**\ *1in*
+ **--dpi-x=**\ *300* **--dpi-y=**\ *300* *input.svg* **>**
+ *output.png* #### outputs 300x300 pixel PNG
+
+DEFAULT OUTPUT SIZE
+-------------------
+
+If you do not specify **--width** or **--height** options for the output
+size, **rsvg-convert** will figure out a "natural size" for the SVG as
+follows:
+
+- **SVG with width and height in pixel units (px):** **<svg
+ width="96px" height="192px">** For PNG output, those same dimensions
+ in pixels are used. For PDF/PS/EPS, that pixel size is converted to
+ physical units based on the DPI value (see the **--dpi-x** and
+ **--dpi-y** options),
+
+- **SVG with width and height in physical units:** **<svg width="1in"
+ height="2in">** For PNG output, the **width** and **height**
+ attributes get converted to pixels, based on the DPI value (see the
+ **--dpi-x** and **--dpi-y** options). For PDF/PS/EPS output, the
+ width/height in physical units define the size of the PDF unless you
+ specify options for the page size; see **SPECIFYING A PAGE SIZE**
+ above.
+
+- **SVG with viewBox only:** **<svg viewBox="0 0 20 30">** The size of
+ the **viewBox** attribute gets used for the pixel size of the image
+ as in the first case above.
+
+- **SVG with width and height in percentages:** **<svg width="100%"
+ height="100%" viewBox="0 0 20 30">** Percentages are meaningless
+ unless you specify a viewport size with the **--width** and
+ **--height** options. In their absence, **rsvg-convert** will just
+ use the size of the **viewBox** for the pixel size, as described
+ above.
+
+- **SVG with no width, height, or viewBox:** **rsvg-convert** will
+ measure the extents of all graphical objects in the SVG document and
+ render them at 1:1 scale (1 pixel for each CSS px unit). It is
+ strongly recommended that you give SVG documents an explicit size
+ with the **width, height,** or **viewBox** attributes.
+
+BACKGROUND COLOR
+----------------
+
+You can use the **--background-color** option ( **-b** for short) to
+specify the backgroung color that will appear in parts of the image that
+would otherwise be transparent. This option accepts the same syntax as
+the CSS **color** property, so you can use **#rrggbb** syntax or CSS
+named colors like **white**.
+
+ **rsvg-convert** **--background-color=**\ *white* *input.svg* **>**
+ *output.png* #### opaque white
+
+..
+
+ **rsvg-convert** **-b** *'#ff000080'* *input.svg* **>** *output.png*
+ #### translucent red - use shell quotes so the # is not interpreted
+ as a comment
+
+SELECTING A LANGUAGE FOR MULTI-LANGUAGE SVG
+-------------------------------------------
+
+An SVG document can use the **<switch>** element and children with the
+**systemLanguage** attribute to provide different content depending on
+the user's language. For example:
+
+::
+
+ <svg xmlns="http://www.w3.org/2000/svg" width="200" height="100">
+ <rect width="200" height="100" fill="white"/>
+ <g transform="translate(30, 30)" font-size="20">
+ <switch allowReorder="yes">
+ <text systemLanguage="es">Español</text>
+ <text systemLanguage="de">Deutsch</text>
+ <text systemLanguage="fr">Français</text>
+ <text>English fallback</text>
+ </switch>
+ </g>
+ </svg>
+
+You can use the **--accept-language** option to select which language to
+use when rendering. This option accepts strings formatted like an HTTP
+Accept-Language header, which is a comma-separated list of BCP47
+language tags: https://www.rfc-editor.org/info/bcp47
+
+ **rsvg-convert** **--accept-language=**\ *es-MX* *input.svg* **>**
+ *output.png* #### selects Mexican Spanish; renders "Español".
+
+USER STYLESHEET
+---------------
+
+You can include an extra CSS stylesheet to be used when rendering an SVG
+document with the **--stylesheet** option. The stylesheet will have the
+CSS user origin, while styles declared in the SVG document will have the
+CSS author origin. This means your extra stylesheet's styles will
+override or augment the ones in the document, unless the document has
+**!important** in its styles.
+
+ **rsvg-convert** **--stylesheet=**\ *extra-styles.css* *input.svg*
+ **>** *output.png*
+
+For example, if this is *input.svg*:
+
+::
+
+ <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
+ <rect width="200" height="100" fill="white"/>
+
+ <rect class="recolorable" x="10" y="10" width="50" height="50" fill="red"/>
+
+ <text x="10" y="80" font-size="20" fill="currentColor">Hello</text>
+ </svg>
+
+And this is *extra-styles.css*:
+
+::
+
+ .recolorable { fill: blue; }
+
+ * { color: green; }
+
+Then the PNG created by the command above will have these elements:
+
+- A blue square instead of a red one, because of the selector for the
+ the **recolorable** class.
+
+- Text in green, since a fill with **currentColor** gets substituted to
+ the value of the **color** property, and the **\*** selector applies
+ to all elements.
+
+OPTIONS
+=======
+
+GENERAL OPTIONS
+---------------
+
+*-f --format [png, pdf, ps, eps, svg]*
+ Output format for the rendered document. Default is png.
+
+*-o --output filename*
+ Specify the output filename. If unspecified, outputs to standard
+ output.
+
+*-v --version*
+ Display what version of rsvg-convert you are running.
+
+*--help*
+ Display a summary of usage and options.
+
+SIZE AND POSITION
+-----------------
+
+*--page-width length --page-height length*
+ Page size of the output document; both options must be used together.
+ The default is to use the image's width and height as modified by the
+ options below.
+
+*--top length*
+ Distance between top edge of the page and the rendered image. Default
+ is 0.
+
+*--left length*
+ Distance between left edge of the page and the rendered image.
+ Default is 0.
+
+*-w --width length*
+ Width of the rendered image. If unspecified, the natural width of the
+ image is used as the default. See the section "SPECIFYING DIMENSIONS"
+ above for details.
+
+*-h --height integer*
+ Height of the rendered image. If unspecified, the natural height of
+ the image is used as the default. See the section "SPECIFYING
+ DIMENSIONS" above for details.
+
+*-a --keep-aspect-ratio*
+ Specify that the aspect ratio is to be preserved, i.e. the image is
+ scaled proportionally to fit in the **--width** and **--height**. If
+ not specified, aspect ratio will not be preserved.
+
+*-d --dpi-x number*
+ Set the X resolution of the image in pixels per inch. Default is 96
+ DPI.
+
+*-p --dpi-y number*
+ Set the Y resolution of the image in pixels per inch. Default is 96
+ DPI.
+
+*-x --x-zoom number*
+ Horizontal scaling factor. Default is 1.0.
+
+*-y --y-zoom number*
+ Vertical factor factor. Default is 1.0.
+
+*-z --zoom number*
+ Horizontal and vertical scaling factor. Default is 1.0.
+
+CONTROLLING THE RENDERED APPEARANCE
+-----------------------------------
+
+*-b --background-color [black, white, #abccee, #aaa...]*
+ Specify the background color. If unspecified, none is used as the
+ default; this will create transparent PNGs, or PDF/PS/EPS without a
+ special background.
+
+*-s --stylesheet filename.css*
+ Filename of a custom CSS stylesheet.
+
+*-l --accept-language [es-MX,fr,en]*
+ Specify which languages will be used for SVG documents with multiple
+ languages. The string is formatted like an HTTP Accept-Language
+ header, which is a comma-separated list of BCP47 language tags:
+ https://www.rfc-editor.org/info/bcp47. The default is to use the
+ language specified by environment variables; see the section
+ "ENVIRONMENT VARIABLES" below.
+
+OPTIONS SPECIFIC TO PDF/PS/EPS OUTPUT
+-------------------------------------
+
+*--keep-image-data*
+ Include the original, compressed images in the final output, rather
+ than uncompressed RGB data. This is the default behavior for PDF and
+ (E)PS output.
+
+*--no-keep-image-data*
+ Do not include the original, compressed images but instead embed
+ uncompressed RGB date in PDF or (E)PS output. This will most likely
+ result in larger documents that are slower to read.
+
+MISCELLANEOUS
+-------------
+
+*-i --export-id object-id*
+ Allows to specify an SVG object that should be exported based on its
+ XML id. If not specified, all objects will be exported.
+
+*-u --unlimited*
+ The XML parser has some guards designed to mitigate large CPU or
+ memory consumption in the face of malicious documents. It may also
+ refuse to resolve data: URIs used to embed image data. If you are
+ running into such issues when converting a SVG, this option allows to
+ turn off these guards.
+
+*--testing*
+ For developers only: render images for librsvg's test suite.
+
+ENVIRONMENT VARIABLES
+=====================
+
+*SOURCE_DATE_EPOCH*
+ If the selected output format is PDF, this variable can be used to
+ control the CreationDate in the PDF file. This is useful for
+ reproducible output. The environment variable must be set to a
+ decimal number corresponding to a UNIX timestamp, defined as the
+ number of seconds, excluding leap seconds, since 01 Jan 1970 00:00:00
+ UTC. The specification for this can be found at
+ https://reproducible-builds.org/specs/source-date-epoch/
+
+*System language*
+ Unless the **--accept-language** option is specified, the default is
+ to use the system's environment to detect the user's preferred
+ language. This consults the environment variables *LANGUAGE*,
+ *LC_ALL*, *LC_MESSAGES*, and *LANG*.
+
+MORE INFORMATION
+================
+
+https://gitlab.gnome.org/GNOME/librsvg
+
+https://wiki.gnome.org/Projects/LibRsvg
+
+http://www.w3.org/TR/SVG11/
+
+http://www.w3.org/TR/SVG2
+
+http://www.gnome.org/
+
+AUTHORS
+=======
+
+Dom Lachowicz (cinamod@hotmail.com), Caleb Moore
+(c.moore@student.unsw.edu.au), Federico Mena-Quintero
+(federico@gnome.org), and a host of others.