Эта страница может содержать автоматически переведенный текст.

Преобразование PDF в изображение в C# и VB.NET

Иногда требуется преобразовать PDF в изображения. Например, может понадобиться создавать миниатюры из PDF или выполнять оптическое распознавание символов (OCR) для некоторых PDF-документов.

Вы можете использовать библиотеку Docotic.Pdf для преобразования PDF-документов в изображения в проектах C# и VB.NET. Библиотека на 100% управляемая и не имеет внешних зависимостей. Она не использует System.Drawing.dll и GDI+ для растеризации PDF. Поэтому вы получите стабильный результат на Windows, Linux, macOS, iOS и Android.

Библиотека доступна на NuGet и на нашем сайте. Получите библиотеку и бесплатный лицензионный ключ с ограниченным сроком действия на странице Скачать C# .NET библиотеку PDF.

Docotic.Pdf предоставляет множество возможностей для преобразования PDF в изображения. Также он может рендерить и печатать PDF-документы. Давайте посмотрим, как можно преобразовывать PDF в изображения с помощью библиотеки Docotic.Pdf.

PDF в изображение в C# и VB.NET

Сохранение страницы PDF как изображения PNG, JPG или TIFF

Библиотека Docotic.Pdf позволяет преобразовывать страницы PDF в изображения PNG, JPEG или TIFF. Вы можете записывать полученные изображения в поток или файл. Этот фрагмент C# сохраняет страницы PDF в изображения PNG с белым фоном и разрешением 300x300 dpi:

using BitMiracle.Docotic.Pdf;

using var pdf = new PdfDocument("your_document.pdf");

PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

for (int i = 0; i < pdf.PageCount; ++i)
    pdf.Pages[i].Save($"page_{i}.png", options);

Вы можете указать библиотеке создавать изображения JPEG или TIFF вместо PNG с помощью свойства PdfDrawOptions.Compression. Следующий фрагмент показывает, как переключиться на создание изображений JPEG:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateJpeg();

Связанные примеры на C# и VB.NET доступны на GitHub.

PDF-документ в многостраничный TIFF в .NET

Вы можете сохранить весь документ в многостраничное TIFF-изображение с помощью метода PdfDocument.SaveAsTiff. Вот пример на C# для преобразования PDF в TIFF:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

pdf.SaveAsTiff("result.tiff", options);

Скачайте и попробуйте пример Сохранить PDF как многостраничный TIFF из GitHub. Там доступны версии на C# и VB.NET.

Создание миниатюр из PDF

С помощью библиотеки Docotic.Pdf можно создавать миниатюры страниц PDF. Этот пример на C# создает миниатюру 200x200 пикселей из первой страницы заданного PDF и записывает миниатюру в поток памяти:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateFitSize(new PdfSize(200, 200), false);
options.BackgroundColor = new PdfGrayColor(100);

using var stream = new MemoryStream();
pdf.Pages[0].Save(stream, options);

Вы также можете использовать методы PdfDrawOptions.CreateFitWidth или PdfDrawOptions.CreateFitHeight для создания миниатюр заданной ширины или высоты.

Преобразование PDF в битональные или оттенки серого изображения в .NET

Библиотека может преобразовывать PDF-документы в битональные (черно-белые) TIFF-изображения. Этот пример показывает, как создать битональное TIFF-изображение из PDF-документа в C#:

using var pdf = new PdfDocument("colored.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.Compression = ImageCompressionOptions.CreateTiff().SetBitonal();

pdf.SaveAsTiff("bitonal.tiff", options);

Вы также можете указать пороговое значение при использовании метода TiffImageCompressionOptions.SetBitonalThreshold. Пороговое значение определяет, как преобразовывать цвета в градациях серого, RGB или CMYK в черно-белые.

Docotic.Pdf также поддерживает преобразование PDF в изображения PNG, JPG или TIFF в градациях серого. Просто используйте один из методов PngImageCompressionOptions.SetGrayscale, JpegImageCompressionOptions.SetGrayscale, TiffImageCompressionOptions.SetGrayscale, как в следующем фрагменте:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreatePng().SetGrayscale();

Масштабирование PDF

Метод PdfDrawOptions.CreateZoom позволяет получить изображение страницы PDF с заданным уровнем масштабирования. Этот пример на C# преобразует страницу PDF в изображение с уровнем масштабирования 400%:

using var pdf = new PdfDocument(@"document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateZoom(400);
pdf.Pages[0].Save("zoomed.png", options);

Частичный рендеринг PDF в изображение

Вам может понадобиться преобразовать в изображение только часть страницы PDF. Например, чтобы разбить большую страницу PDF на тайлы. Или обрезать ненужное содержимое.

Этот код C# сохраняет изображение области 256x256 пунктов в левом верхнем углу страницы PDF:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

PdfPage page = pdf.Pages[0];
PdfBox cropBoxBefore = page.CropBox;

page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
page.Save("part.png", options);

page.CropBox = cropBoxBefore;

Тайловый рендеринг PDF в изображение

Docotic.Pdf предоставляет встроенную поддержку тайлового рендеринга PDF в TIFF. Этот метод полезен, когда нужно обрабатывать большие страницы PDF с фиксированным объемом памяти.

Например, ваш PDF-документ содержит страницу размером 10000x10000 пунктов. Обычное преобразование этой страницы в изображение RGB с разрешением 300 DPI требует более 1 Gb (= 10000 * 10000 * 3 * 300 / 72.0 bytes) памяти для промежуточных несжатых данных RGB-изображения. При использовании тайлового рендеринга с тайлами 1024x1024 вы можете ограничить потребление памяти для несжатых данных RGB-изображения до 12 Mb (= 1024 * 1024 * 3 * 300 / 72.0 bytes).

Обратите внимание, что тайловое преобразование PDF в изображение работает медленнее, чем обычное преобразование. Для каждого тайла библиотеке нужно обрабатывать все операции страницы PDF, даже если некоторые из них не влияют на текущий тайл.

Этот пример на C# показывает, как преобразовать PDF в изображение, используя тайлы 512x512:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateTiff().SetTileSize(512, 512);
options.BackgroundColor = new PdfGrayColor(100);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

pdf.Pages[0].Save("tiled.tiff", options);

Заключение

Библиотека Docotic.Pdf предоставляет различные возможности для преобразования PDF в изображения в .NET. Вы можете преобразовывать страницы PDF в изображения полного размера или миниатюры в форматах PNG, TIFF и JPEG. Также вы можете сохранять PDF-документы как многостраничные TIFF-файлы. Библиотека также может создавать битональные изображения и изображения в градациях серого.

Скачайте и попробуйте примеры PDF в изображение из GitHub.

Свяжитесь с нами, если у вас есть вопросы о преобразовании PDF в изображение.