Конвертация PDF в различные форматы изображений в C#

Обзор

Эта статья объясняет, как конвертировать PDF в различные форматы изображений с помощью C#. Она охватывает следующие темы.

Формат изображения: TIFF

Формат изображения: BMP

Формат изображения: EMF

Формат изображения: JPG

Формат изображения: PNG

Формат изображения: GIF

Формат изображения: SVG

C# Конвертация PDF в изображение

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Aspose.PDF для .NET использует несколько подходов для конвертации PDF в изображение. Aspose.PDF для .NET использует несколько подходов для конвертации PDF в изображение.

В библиотеке есть несколько классов, которые позволяют использовать виртуальное устройство для преобразования изображений. DocumentDevice ориентирован на конвертацию всего документа, а ImageDevice - на конвертацию конкретной страницы.

Конвертация PDF с использованием класса DocumentDevice

Aspose.PDF для .NET позволяет конвертировать страницы PDF в изображения TIFF.

Класс TiffDevice (основанный на DocumentDevice) позволяет конвертировать страницы PDF в изображения TIFF. Этот класс предоставляет метод с именем Process, который позволяет конвертировать все страницы в файле PDF в одно изображение TIFF.

Конвертирование страниц PDF в один TIFF файл

Aspose.PDF для .NET объясняет, как конвертировать все страницы PDF файла в одно изображение TIFF:

Шаги: Конвертация PDF в TIFF на C#

  1. Создайте объект класса Document.
  2. Создайте объекты TiffSettings и TiffDevice.
  3. Вызовите метод TiffDevice.Process() для конвертации PDF документа в TIFF.
  4. Для настройки свойств выходного файла используйте класс TiffSettings.

Следующий пример кода показывает, как конвертировать все страницы PDF в одно изображение TIFF.

public static void ConvertPDFtoTIFF()
{
    // Открыть документ
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Создать объект Resolution
    Resolution resolution = new Resolution(300);

    // Создать объект TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
        SkipBlankPages = false
    };

    // Создать устройство TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // Конвертировать определенную страницу и сохранить изображение в поток
    tiffDevice.Process(pdfDocument, _dataDir + "AllPagesToTIFF_out.tif");
}

Конвертирование одной страницы в изображение TIFF

Aspose.PDF для .NET позволяет конвертировать конкретную страницу PDF файла в изображение TIFF, используя перегруженную версию метода Process(..), который принимает номер страницы в качестве аргумента для конвертации. Следующий код показывает, как конвертировать первую страницу PDF в формат TIFF.

Шаги: Конвертация одной или конкретных страниц PDF в TIFF в C#

  1. Создайте объект класса Document.
  2. Создайте объекты TiffSettings и TiffDevice.
  3. Вызовите перегруженный метод TiffDevice.Process() с параметрами fromPage и toPage для конвертации страниц документа PDF в TIFF.
public static void ConvertPDFtoTiffSinglePage()
{
    // Открыть документ
    Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    // Создать объект Resolution
    Resolution resolution = new Resolution(300);

    // Создать объект TiffSettings
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.None,
        Depth = ColorDepth.Default,
        Shape = ShapeType.Landscape,
    };

    // Создать устройство TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

    // Конвертировать конкретную страницу и сохранить изображение в поток
    tiffDevice.Process(pdfDocument, 1, 1, _dataDir + "PageToTIFF_out.tif");
}

Используйте алгоритм Брэдли при конвертации

Aspose.PDF для .NET поддерживает функцию конвертации PDF в TIF с использованием сжатия LZW, а затем с использованием AForge можно применить бинаризацию. Однако один из клиентов запросил, чтобы для некоторых изображений получить порог с использованием Отсу, поэтому они также хотели бы использовать Брэдли.

  public static void ConvertPDFtoTiffBradleyBinarization()
{
     // Открыть документ
     Document pdfDocument = new Document(_dataDir + "PageToTIFF.pdf");

    string outputImageFile = _dataDir + "resultant_out.tif";
    string outputBinImageFile = _dataDir + "37116-bin_out.tif";

    // Создать объект разрешения
    Resolution resolution = new Resolution(300);
    // Создать объект настроек TIFF
    TiffSettings tiffSettings = new TiffSettings
    {
        Compression = CompressionType.LZW,
        Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
    };
    // Создать устройство TIFF
    TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
    // Конвертировать определенную страницу и сохранить изображение в поток
    tiffDevice.Process(pdfDocument, outputImageFile);

    using (FileStream inStream = new FileStream(outputImageFile, FileMode.Open))
    {
        using (FileStream outStream = new FileStream(outputBinImageFile, FileMode.Create))
        {
            tiffDevice.BinarizeBradley(inStream, outStream, 0.1);
        }
    }
} 

Конвертация PDF с использованием класса ImageDevice

ImageDevice является предком для BmpDevice, JpegDevice, GifDevice, PngDevice и EmfDevice.

  • Класс BmpDevice позволяет конвертировать страницы PDF в изображения BMP.
  • Класс EmfDevice позволяет конвертировать страницы PDF в изображения EMF.
  • Класс JpegDevice позволяет конвертировать страницы PDF в изображения JPEG.
  • Класс PngDevice позволяет конвертировать страницы PDF в изображения PNG.
  • Класс GifDevice позволяет конвертировать страницы PDF в изображения GIF.

Давайте рассмотрим, как конвертировать страницу PDF в изображение. Давайте посмотрим, как конвертировать страницу PDF в изображение.

Класс BmpDevice предоставляет метод под названием Process, который позволяет конвертировать определенную страницу PDF файла в формат изображения BMP. Другие классы имеют тот же метод. Таким образом, если нам нужно конвертировать страницу PDF в изображение, мы просто создаем экземпляр необходимого класса.

Следующие шаги и фрагмент кода на C# демонстрируют эту возможность

Шаги: PDF в Изображение (BMP, EMF, JPG, PNG, GIF) на C#

  1. Создайте экземпляр подкласса ImageDevice, например:
    • BmpDevice (для конвертации PDF в BMP)
    • EmfDevice (для конвертации PDF в Emf)
    • JpegDevice (для конвертации PDF в JPG)
    • PngDevice (для конвертации PDF в PNG)
    • GifDevice (для конвертации PDF в GIF)
  2. Вызовите метод ImageDevice.Process() для выполнения конвертации PDF в изображение.
public static class ExampleConvertPdfToImage
{
     private static readonly string _dataDir = @"C:\Samples\";
    // BMP, JPEG, GIF, PNG, EMF
    public static void ConvertPDFusingImageDevice()
    {
        // Создание объекта Resolution            
        Resolution resolution = new Resolution(300);
        BmpDevice bmpDevice = new BmpDevice(resolution);
        JpegDevice jpegDevice = new JpegDevice(resolution);
        GifDevice gifDevice = new GifDevice(resolution);
        PngDevice pngDevice = new PngDevice(resolution);
        EmfDevice emfDevice = new EmfDevice(resolution);

        Document document = new Document(_dataDir + 
            "ConvertAllPagesToBmp.pdf");
            
        ConvertPDFtoImage(bmpDevice, "bmp", document);
        ConvertPDFtoImage(jpegDevice,"jpeg", document);
        ConvertPDFtoImage(gifDevice, "gif", document);
        ConvertPDFtoImage(pngDevice, "png", document);
        ConvertPDFtoImage(emfDevice, "emf", document);
            
    }
}

public static void ConvertPDFtoImage(ImageDevice imageDevice, 
        string ext, Document pdfDocument)
{
    for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
    {
        using (FileStream imageStream = 
        new FileStream($"{_dataDir}image{pageCount}_out.{ext}", 
        FileMode.Create))
        {
            // Конвертация конкретной страницы и сохранение изображения в поток
            imageDevice.Process(pdfDocument.Pages[pageCount], imageStream);

            // Закрытие потока
            imageStream.Close();
        }
    }
}

Конвертация PDF с использованием класса SaveOptions

Эта часть статьи показывает, как конвертировать PDF в SVG с использованием C# и класса SaveOptions.

Масштабируемая векторная графика (SVG) представляет собой семейство спецификаций основанного на XML формата файла для двумерной векторной графики, как статической, так и динамической (интерактивной или анимированной). Спецификация SVG является открытым стандартом, который разрабатывается Консорциумом Всемирной паутины (W3C) с 1999 года.

Изображения SVG и их поведение определяются в текстовых файлах XML. Это означает, что их можно искать, индексировать, программировать и при необходимости сжимать. Как файлы XML, изображения SVG могут быть созданы и отредактированы в любом текстовом редакторе, однако часто более удобно создавать их с помощью программ для рисования, таких как Inkscape.

Aspose.PDF для .NET поддерживает функцию конвертации изображения SVG в формат PDF, а также предлагает возможность конвертации файлов PDF в формат SVG. Aspose.PDF для .NET поддерживает функцию конвертации изображений SVG в формат PDF, а также предлагает возможность конвертировать файлы PDF в формат SVG.

Следующий фрагмент кода показывает шаги для конвертации файла PDF в формат SVG с помощью .NET.

Шаги: Конвертация PDF в SVG на C#

  1. Создайте объект класса Document.
  2. Создайте объект SvgSaveOptions с необходимыми настройками.
  3. Вызовите метод Document.Save() и передайте ему объект SvgSaveOptions для конвертации документа PDF в SVG.
public static void ConvertPDFtoSVG()
{
    // Загрузка документа PDF
    Document document = new Document(System.IO.Path.Combine(_dataDir, "input.pdf"));
    // Создание объекта SvgSaveOptions
    SvgSaveOptions saveOptions = new SvgSaveOptions
    {
        // Не сжимать изображение SVG в архив Zip
        CompressOutputToZipArchive = false,
        TreatTargetFileNameAsDirectory = true                
    };
            
    // Сохранение результата в файлы SVG
    document.Save(System.IO.Path.Combine(_dataDir, "PDFToSVG_out.svg"), saveOptions);
}