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

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

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

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

Библиотека Docotic.Pdf 9.5.17615-dev Регрессионные тесты 14,813 прошло Всего загрузок NuGet 4,924,084

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

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 = ..;
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 = ..;
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 Гб памяти (= 10000 * 10000 * 3 * 300 / 72,0 байт) памяти для данных промежуточного несжатого изображения RGB. Используя тайловый рендеринг с тайлами 1024x1024, вы можете ограничить потребление памяти для данных несжатого изображения RGB до 12 Мб (= 1024 * 1024 * 3 * 300 / 72,0 байт).

Обратите внимание, что плиточный ренедеринг 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 в изображения.