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

Сконвертировать 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.3.17036-dev Регрессионные тесты 14,665 прошло Всего загрузок NuGet 4,191,515

Вы можете загрузить бинарные файлы библиотеки или использовать ее пакет NuGet. Чтобы опробовать Docotic.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 = ..;
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 в изображения.