Relevant products

Render PDF page to Skia surface

Starting with version 4.0, we use the Skia 2D graphics library to render PDF pages. Methods Page.Saveand 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(pdfStream);
var page = pdf.Pages[0];

Calculate the size of the image

const float cScale = 1.0f; // 72 dpi
var pageBox = page.CropBox ?? page.MediaBox;
int width = (int)Math.Round(pageBox.Width * cScale);
int height = (int)Math.Round(pageBox.Height * cScale);
if (pdfPage.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, cScale);
  // ...
}

Save rendering buffer to raster image

using (var pixmap = surface.PeekPixels())
using (var imageStream = new SKFileWStream(imgFile))
{
  pixmap.Encode(imageStream, SKEncodedImageFormat.Jpeg, 90);
  stream.Flush();
}