---
title: "Using Skia's PDF Backend"
linkTitle: "Using Skia's PDF Backend"
---
Here is an example of using Skia's PDF backend (SkPDF) via the SkDocument and
SkCanvas APIs.
---
## SkPDF Limitations
There are several corners of Skia's public API that SkPDF currently does not
handle because either no known client uses the feature or there is no simple
PDF-ish way to handle it.
In this document:
- **drop** means to draw nothing.
- **ignore** means to draw without the effect
- **expand** means to implement something in a non-PDF-ish way. This may mean to
rasterize vector graphics, to expand paths with path effects into many
individual paths, or to convert text to paths.
Effect | text | images | everything
else |
SkMaskFilter | drop | ignore | ignore |
SkPathEffect | ignore | n/a | expand |
SkColorFilter | ignore | expand | ignore |
SkImageFilter | expand | expand | expand |
unsupported SkXferModes | ignore | ignore | ignore |
non-gradient SkShader | expand | n/a | expand |
Notes:
- _SkImageFilter_: When SkImageFilter is expanded, text-as-text is lost.
- _SkXferMode_: The following transfer modes are not natively supported by PDF:
DstOver, SrcIn, DstIn, SrcOut, DstOut, SrcATop, DstATop, and Modulate.
Other limitations:
- _drawText with VerticalText_ — drop. No known clients seem to make use of the
VerticalText flag.
- _drawTextOnPath_ — expand. (Text-as-text is lost.)
- _drawVertices_ — drop.
- _drawPatch_ — drop.
---