Как извлечь все изображения и векторную графику из PDF на C# и .NET
Полный код
using System;
using System.IO;
using System.Collections.Generic;
using SautinSoft;
namespace Sample
{
class Sample
{
static void Main(string[] args)
{
// Before starting, we recommend to get a free 100-day key:
// https://sautinsoft.com/start-for-free/
// Apply the key here:
// SautinSoft.PdfFocus.SetLicense("...");
// Extract all images from PDF
SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
string pdfFile = Path.GetFullPath(@"..\..\..\simple text.pdf");
string imageDir = new DirectoryInfo(Directory.GetCurrentDirectory()).CreateSubdirectory("images").FullName;
List<PdfFocus.PdfImage> pdfImages = null;
f.OpenPdf(pdfFile);
if (f.PageCount > 0)
{
// Rasterize all vector graphics
f.ImageExtractionOptions.RasterizeComplexGraphics = true;
pdfImages = f.ExtractImages();
// Show all extracted images.
if (pdfImages != null && pdfImages.Count > 0)
{
for (int i = 0; i < pdfImages.Count; i++)
{
string imageFile = Path.Combine(imageDir, String.Format("img{0}.png", i + 1));
pdfImages[i].Picture.Encode(new FileStream(imageFile, FileMode.Create), SkiaSharp.SKEncodedImageFormat.Png, 100);
}
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(imageDir) { UseShellExecute = true });
}
}
}
}
}
Imports System
Imports System.IO
Imports System.Collections.Generic
Imports SautinSoft
Namespace Sample
Friend Class Sample
Shared Sub Main(ByVal args() As String)
' Before starting, we recommend to get a free 100-day key:
' https://sautinsoft.com/start-for-free/
' Apply the key here
' SautinSoft.PdfFocus.SetLicense("...");
' Extract all images from PDF
Dim f As New SautinSoft.PdfFocus()
Dim pdfFile As String = Path.GetFullPath("..\..\..\simple text.pdf")
Dim imageDir As String = (New DirectoryInfo(Directory.GetCurrentDirectory())).CreateSubdirectory("images").FullName
Dim pdfImages As List(Of PdfFocus.PdfImage) = Nothing
f.OpenPdf(pdfFile)
If f.PageCount > 0 Then
' Rasterize all vector graphics
f.ImageExtractionOptions.RasterizeComplexGraphics = True
pdfImages = f.ExtractImages()
' Show all extracted images.
If pdfImages IsNot Nothing AndAlso pdfImages.Count > 0 Then
For i As Integer = 0 To pdfImages.Count - 1
Dim imageFile As String = Path.Combine(imageDir, String.Format("img{0}.png", i + 1))
pdfImages(i).Picture.Encode(New FileStream(imageFile, FileMode.Create), SkiaSharp.SKEncodedImageFormat.Png, 100)
Next i
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(imageDir) With {.UseShellExecute = True})
End If
End If
End Sub
End Class
End Namespace
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: