This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /guides/ios/knowledge-base/how-do-i-get-an-image-from-signatureviewcontroller.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. Get an ink signature image in iOS

There are two options for getting the image of an ink signature from a SignatureViewController.

Option 1

Subclass the SignatureViewController and override its done(_:) method to access its drawView. This will create the ink signature.

Once you have the ink signature, you can use Annotation.image(size:options:) to create a UIImage of the ink annotation, like so:

class CustomSignatureViewController: SignatureViewController {
override func done(_ sender: Any?) {
super.done(sender)
// The current document.
let document = ...
let pageInfo = document.pageInfoForPage(at:0)!
let pointSequences = self.drawView.pointSequences.map{ $0.map({ NSValue.valueWithDrawingPoint($0) }) }
let pdfSpaceLines = ConvertViewLines(pdfLines: pointSequences, pageInfo: pageInfo, viewBounds: self.drawView.frame)
let lines = pdfSpaceLines.map { $0.map({ $0.drawingPointValue }) }
let inkAnnotation = InkAnnotation(lines: lines)
// Create the `UIImage` from the ink annotation in your `SignatureViewController`.
let image = inkAnnotation.image(size: inkAnnotation.boundingBox.size, options: nil)
}
}

Option 2

If, for whatever reason, the SignatureViewController is presented in a context in which a Document isn’t available to get a reference PDFPageInfo object to perform the annotation calculations, you can call DrawView.drawHierarchy(in:afterScreenUpdates:)(opens in a new tab) within an image rendering context to get a direct image out of DrawView:

class CustomSignatureViewController: SignatureViewController {
override func done(_ sender: Any?) {
super.done(sender)
let rect = ...
let renderer = UIGraphicsImageRenderer(size: rect.size)
let image = renderer.image { _ in
self.drawView.drawHierarchy(in: rect, afterScreenUpdates: true)
}
}
}

For more details about accessing properties from a SignatureViewController and its drawView property, take a look at SignAllPagesExample.swift(opens in a new tab) from our Nutrient Catalog app.