Render PDF page to Skia surface
Render PDF page to Skia surface
Starting with version 4.0, we use the <a https:="">Skia 2D graphics library</a> to render PDF pages. Methods Page.Save
and Document.ConvertToTiff
can be used to render pages or documents directly to single- or multipage raster images. It is however also possible to render to a Skia surface. This is demonstrated by the following code sample.
Open PDF and select the first page
var pdf = new Document(stream);
var page = pdf.Pages[0];
Calculate the size of the image
const float scale = 1.0f; // 72 dpi
var pageBox = page.CropBox ?? page.MediaBox;
int width = (int)Math.Round(pageBox.Width * scale);
int height = (int)Math.Round(pageBox.Height * scale);
if (page.Rotation % 180 != 0)
{
int tmp = width;
width = height;
height = tmp;
}
Render page into Skia surface
var info = new SKImageInfo(width, height);
using (var surface = SKSurface.Create(info))
{
page.Draw(surface, info, scale);
// ...
}
Save rendering buffer to raster image
using (var pixmap = surface.PeekPixels())
using (var imagegStream = new SKFileWStream(file))
{
pixmap.Encode(imageStream, SKEncodedImageFormat.Jpeg, 90);
imageStream.Flush();
}