PdfPig.Rendering.Skia 0.1.12.2
PdfPig.Rendering.Skia
Cross-platform library to render pdf documents as images with PdfPig using SkiaSharp, or to extract images contained in a pdf page as SkiaSharp images.
[!IMPORTANT] This is a very early version and the code is constantly evolving.
Available as a Nuget package https://www.nuget.org/packages/PdfPig.Rendering.Skia/
Uses parts of PDFBox code.
How to Render pages as images
Save pages as image to disk
using UglyToad.PdfPig.Graphics.Colors;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Rendering.Skia;
using SkiaSharp;
[...]
using (var document = PdfDocument.Open(_path, SkiaRenderingParsingOptions.Instance))
{
string fileName = Path.GetFileName(_path);
document.AddSkiaPageFactory(); // Same as document.AddPageFactory<SKPicture, SkiaPageFactory>()
for (int p = 1; p <= document.NumberOfPages; p++)
{
using (var fs = new FileStream($"{fileName}_{p}.png", FileMode.Create))
using (var ms = document.GetPageAsPng(p, _scale, RGBColor.White))
{
ms.WriteTo(fs);
}
}
}
Get the SKBitmap from a page
using UglyToad.PdfPig.Graphics.Colors;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Rendering.Skia;
using SkiaSharp;
[...]
using (var document = PdfDocument.Open(_path, SkiaRenderingParsingOptions.Instance))
{
document.AddSkiaPageFactory(); // Same as document.AddPageFactory<SKPicture, SkiaPageFactory>()
for (int p = 1; p <= document.NumberOfPages; p++)
{
var bitmap = document.GetPageAsSKBitmap(p, _scale, RGBColor.White);
// Use the SKBitmap
}
}
Get the SKPicture from a page
using UglyToad.PdfPig.Graphics.Colors;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Rendering.Skia;
using SkiaSharp;
[...]
using (var document = PdfDocument.Open(_path, SkiaRenderingParsingOptions.Instance))
{
document.AddSkiaPageFactory(); // Same as document.AddPageFactory<SKPicture, SkiaPageFactory>()
for (int p = 1; p <= document.NumberOfPages; p++)
{
var picture = document.GetPage<SKPicture>(p);
// Use the SKPicture
}
}
How to extract images contained in a pdf page
using UglyToad.PdfPig.Rendering.Skia.Helpers;
[...]
using (var document = PdfDocument.Open(_path, SkiaRenderingParsingOptions.Instance))
{
for (int p = 1; p <= document.NumberOfPages; p++)
{
var page = document.GetPage(p);
foreach (var pdfImage in page.GetImages())
{
var skImage = pdfImage.GetSKImage();
// Use SKImage
}
}
}
No packages depend on PdfPig.Rendering.Skia.
.NET Framework 4.6.2
- Microsoft.Bcl.HashCode (>= 6.0.0)
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.HarfBuzz (>= 3.119.1)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
.NET 8.0
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.HarfBuzz (>= 3.119.1)
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
.NET 9.0
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.HarfBuzz (>= 3.119.1)
.NET Standard 2.0
- Microsoft.Bcl.HashCode (>= 6.0.0)
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.HarfBuzz (>= 3.119.1)
.NET 6.0
- SkiaSharp.HarfBuzz (>= 3.119.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
.NET Framework 4.7.1
- Microsoft.Bcl.HashCode (>= 6.0.0)
- PdfPig (>= 0.1.12)
- PdfPig.Filters.Jbig2.PdfboxJbig2 (>= 0.1.12.1)
- PdfPig.Filters.Jpx.OpenJpeg (>= 0.1.12.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.HarfBuzz (>= 3.119.1)
- PdfPig.Filters.Dct.JpegLibrary (>= 0.1.12.1)