---
title: swift-foundations/swift-svg-printer
framework: Swift Package Catalog
role: article
path: packages/swift-foundations/swift-svg-printer
---

# swift-foundations/swift-svg-printer

Renders SVG types to strings and bytes for cross-platform SVG generation.

## Overview

swift-svg-printer provides the rendering layer for the SVG type system, converting `swift-svg-standard` elements into SVG markup as strings or byte arrays.

## Features

- Renders to `ContiguousArray<UInt8>` for memory efficiency - String conversion via `render()` method - Attribute escaping and formatting for valid SVG output - Configurable indentation and pretty-printing - Dependencies: swift-svg-standard, swift-collections, swift-dependencies

## Installation

Add swift-svg-printer to your `Package.swift`:

```swift dependencies: [     .package(url: "https://github.com/coenttb/swift-svg-printer", from: "0.1.0") ], targets: [     .target(         name: "YourTarget",         dependencies: [             .product(name: "SVGPrinter", package: "swift-svg-printer")         ]     ) ] ```

## Quick Start

```swift import SVG_Renderable

// Create a printer var printer = SVGPrinter()

// Build SVG markup printer.append("<circle cx=\"50\" cy=\"50\" r=\"40\"/>")

// Get result as string let svgString = String(decoding: printer.bytes, as: UTF8.self) // Output: <circle cx="50" cy="50" r="40"/> ```

## Usage Examples

### Pretty Printing

```swift import SVG_Renderable

var printer = SVGPrinter(.pretty) printer.append("<svg>") printer.appendNewlineIfNeeded() printer.indent() printer.appendIndentationIfNeeded() printer.append("<circle cx=\"50\" cy=\"50\" r=\"40\"/>") printer.outdent() printer.appendNewlineIfNeeded() printer.append("</svg>")

let output = String(decoding: printer.bytes, as: UTF8.self) ```

### Attribute Management

```swift import SVG_Renderable import OrderedCollections

var printer = SVGPrinter() printer.attributes["fill"] = "red" printer.attributes["stroke"] = "black"

// Attributes can be accessed and managed let fillColor = printer.attributes["fill"] // "red" ```

## Related Packages

### Dependencies

- [swift-svg-standard](https://github.com/swift-standard/swift-svg-standard): A Swift package with foundational types for SVG.

### Used By

- [swift-svg](https://github.com/coenttb/swift-svg): A Swift package for type-safe SVG generation.

### Third-Party Dependencies

- [pointfreeco/swift-dependencies](https://github.com/pointfreeco/swift-dependencies): A dependency management library for controlling dependencies in Swift. - [apple/swift-collections](https://github.com/apple/swift-collections): Commonly used data structures for Swift.

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## License

This project is licensed under the Apache 2.0 License. See [LICENSE](LICENSE) for details.

## Package Metadata

Repository: swift-foundations/swift-svg-printer

Default branch: main

README: README.md
