skia2/site/user/sample/pdf.md
Hal Canary d04aaa3a84 PDF example
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>
2019-05-28 17:21:59 +00:00

65 lines
2.2 KiB
Markdown

Using Skia's PDF Backend
========================
Here is an example of using Skia's PDF backend (SkPDF) via the
SkDocument and SkCanvas APIs.
<fiddle-embed name='@PDF'></fiddle-embed>
<!-- https://fiddle.skia.org/c/@PDF docs/examples/PDF.cpp -->
* * *
<span id="limits">SkPDF Limitations</span>
------------------------------------------
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.
<style scoped><!--
#pdftable {border-collapse:collapse;}
#pdftable tr th, #pdftable tr td {border:#888888 2px solid;padding: 5px;}
--></style>
<table id="pdftable">
<tr><th>Effect</th> <th>text</th> <th>images</th> <th>everything
else</th></tr>
<tr><th>SkMaskFilter</th> <td>drop</td> <td>ignore</td> <td>ignore</td></tr>
<tr><th>SkPathEffect</th> <td>ignore</td> <td>n/a</td> <td>expand</td></tr>
<tr><th>SkColorFilter</th> <td>ignore</td> <td>expand</td> <td>ignore</td></tr>
<tr><th>SkImageFilter</th> <td>expand</td> <td>expand</td> <td>expand</td></tr>
<tr><th>unsupported SkXferModes</th> <td>ignore</td> <td>ignore</td> <td>ignore</td></tr>
<tr><th>non-gradient SkShader</th> <td>expand</td> <td>n/a</td> <td>expand</td></tr>
</table>
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.
* * *