Update https://skia.org/user/sample/pdf to use example. https://fiddle.skia.org/c/0777df0419252e28d93c26fb5b789059 Change-Id: Ia828cd5d2ffd30d24a237ffaa3b007984d98a3ba Reviewed-on: https://skia-review.googlesource.com/c/skia/+/216345 Auto-Submit: Hal Canary <halcanary@google.com> Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
2.2 KiB
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.