---
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. ---