Категория

Решение C# для преобразования PDF в изображения

2024-02-01 08:58:57

C# Solution for PDF to Image Conversion

PDF-файлы широко используются в повседневной работе благодаря их стабильному формату, легкости переноса и высокой читаемости. В некоторых случаях вам может потребоваться конвертировать PDF в изображения. Сохранение контента в виде изображений не только ускоряет загрузку, но и снижает риск случайного редактирования. Кроме того, если вы хотите встроить PDF-файлы или страницы в другие документы или веб-страницы, отличным выбором будет их преобразование в указанные форматы изображений. В этом отрывке раскрываются подробности использование C# для преобразования PDF в изображение. И вы можете легко конвертировать PDF в нужные форматы изображений с помощью кода C#, сохраняя при этом визуальную точность исходного содержимого.

Библиотека C# для преобразования PDF

В этой статье показано, как преобразовать PDF в изображение с помощью Spire.PDF for .NET — надежной библиотеки обработки PDF, позволяющей манипулировать PDF-файлами и преобразовывать их в приложениях .NET. С его помощью вы даже можете настроить свойства изображения, такие как его размер и количество пикселей, во время преобразования из PDF в изображение.
Помимо изображений, эта библиотека также позволяет конвертировать PDF в Word, PDF в HTML, PDF в XPS и так далее.

Вы также можете скачать его и создайте ссылку на файл DLL вручную или установите его через NuGet, используя следующую команду:

PM> Install-Package Spire.PDF

Классификация форматов изображений

В компьютерной графике изображения можно разделить на две основные категории:

  • Растровые изображения состоят из сетки отдельных пикселей, где каждому пикселю присвоен определенный цвет. Распространенные форматы растровых изображений включают PNG, JPG, BMP, EMF и TIFF.
  • С другой стороны, векторная графика представляет изображения с помощью математических уравнений и геометрических фигур, таких как линии, кривые и многоугольники. Распространенные форматы векторной графики включить SVG и EPS.

В настоящее время Spire.PDF for .NET поддерживает форматы PNG/JPG/BMP/EMF/TIFF/SVG. Далее я расскажу вам подробности каждого преобразования.

Конвертируйте PDF в PNG/JPG/BMP/EMF/TIFF на C#

Шаги

  1. Создайте экземпляр PdfDocument и загрузите PDF-файл с диска с помощью метода LoadFromFile().
  2. Вызовите метод SaveAsImage(int pageIndex, PdfImageType type, int dpiX, int dpiY), чтобы преобразовать указанную страницу в изображение.
  3. Наконец, сохраните изображения в виде файлов JPG, используя метод Image.Save(строковое имя файла, формат ImageFormat). В данном случае в качестве примера я беру PDF в JPG. Вы также можете изменить формат, если хотите.

Образец кода

  • C#
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using System.Drawing;
    using System.Drawing.Imaging;
    
    namespace PDFtoImage
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                //Convert the first page to an image and set the image Dpi
                Image image = pdf.SaveAsImage(0, PdfImageType.Bitmap, 500, 500);
    
                //Save images as JPG format to a specified folder 
                image.Save("C:\\Users\\Administrator\\Desktop\\Image\\ToImage.jpg", ImageFormat.Jpeg);
    
                //Close the document
                pdf.Close();
            }
        }
    }

Преобразование PDF в SVG на C#

Шаги

  1. Создайте экземпляр PdfDocument и загрузите PDF-файл с диска с помощью метода LoadFromFile().
  2. Преобразуйте первую страницу в SVG с помощью метода SaveToFile(string filename, int startIndex, int endIndex, FileFormat fileFormat). В параметре вы можете указать индекс страницы, который хотите преобразовать.

Образец кода

  • C#
using Spire.Pdf;
    
    namespace PDFtoSVG
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                //Convert the first page to SVG
                pdf.SaveToFile("C:\\Users\\Administrator\\Desktop\\Image\\ToImage.svg", 0, 0, FileFormat.SVG);
    
                //Close the document
                pdf.Close();
            }
        }
    }

Преобразование PDF в многостраничный TIFF на C#

По сравнению с другими форматами изображений, TIFF позволяет хранить несколько изображений или страниц в одном файле. Эта функция в некоторых случаях делает его популярным выбором среди пользователей.

В этом разделе я покажу вам, как преобразовать файл PDF в многостраничный файл TIFF. Чтобы добиться этого преобразования, мы можем настроить следующие методы.
  • Метод SaveAsImage() поддерживает преобразование каждой страницы PDF в изображение, а затем возвращает массив изображений.
  • Метод GetEncoderInfo() поддерживает поиск и возврат соответствующей информации кодировщика изображения на основе заданного типа MIME.
  • Метод JoinTiffImages() используется для объединения нескольких изображений в один файл TIFF. Он работает, перебирая каждое изображение в массиве изображений и сохраняя его в соответствии с указанными параметрами кодировщика.

Шаги

  1. Создайте экземпляр PdfDocument и загрузите PDF-файл с диска с помощью метода LoadFromFile().
  2. Вызовите метод SaveAsImage(), чтобы преобразовать каждую страницу PDF-файла в изображение и сохранить его в массиве изображений.
  3. Наконец, вызовите метод JoinTiffImages(), чтобы объединить преобразованные изображения TIFF в многостраничный файл TIFF.

Образец кода

  • C#
using System;
    using System.Drawing;
    using System.Drawing.Imaging;
    using Spire.Pdf;
    namespace SavePdfAsTiff
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                // Load the PDF file
                pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");
    
                // Convert PDF pages to images and save them as an image array
                Image[] images = SaveAsImage(pdf);
    
                // Merge the converted TIFF images into a multi-page TIFF file
                JoinTiffImages(images, "C:\\Users\\Administrator\\Desktop\\Image\\ToImage.tiff", EncoderValue.CompressionLZW);
            }
    
            private static Image[] SaveAsImage(PdfDocument pdf)
            {
                // Create an image array with the size equal to the number of PDF pages
                Image[] images = new Image[pdf.Pages.Count];
    
                //Iterate through each page of PDF
                for (int i = 0; i < pdf.Pages.Count; i++)
                {
                    //Convert these pages to images 
                    images[i] = pdf.SaveAsImage(i);
                }
                return images;
            }
    
            private static ImageCodecInfo GetEncoderInfo(string mimeType)
            {
                // Get all available image encoders
                ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
                for (int j = 0; j < encoders.Length; j++)
                {
                    // Find the encoder that matches the specified mime type
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                // An exception is thrown if no matching encoder is found
                throw new Exception(mimeType + " mime type not found in ImageCodecInfo");
            }
    
            public static void JoinTiffImages(Image[] images, string outFile, EncoderValue compressEncoder)
            {
                //Set the parameters of the image encoder
                Encoder enc = Encoder.SaveFlag;
                EncoderParameters ep = new EncoderParameters(2);
                ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
                ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)compressEncoder);
    
                // Initialize the first image as the base for merging
                Image pages = images[0];
                int frame = 0;
    
                // Get the encoder information for TIFF format
                ImageCodecInfo info = GetEncoderInfo("image/tiff");
    
                // Iterate through each image
                foreach (Image img in images)
                {
                    if (frame == 0)
                    {
                        // If it's the first frame, set it as the current base image
                        pages = img;
    
                        // Save the first frame using the specified encoder parameters
                        pages.Save(outFile, info, ep);
                    }
                    else
                    {
                        // For intermediate frames, update the encoder parameter to indicate a new page
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
    
                        // Save the intermediate frame
                        pages.SaveAdd(img, ep);
                    }
                    if (frame == images.Length - 1)
                    {
                        // If it's the last frame, flush the encoder parameters to close the file
                        ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
                        pages.SaveAdd(ep);
                    }
                    frame++;
                }
            }
        }
    }

Бесплатная пробная версия библиотеки C#

Spire.PDF for .NET предоставляется бесплатно, чтобы помочь пользователям лучше оценить функции продукта без ограничений. Вы можете получить Бесплатная 30-дневная временная лицензия по следующей ссылке, чтобы преобразовать PDF в изображение на C#.

Заключение

В этом посте вы узнали, как конвертировать PDF в популярные форматы изображений с помощью C#. Spire.PDF for .NET также может помочь вам в решении других задач по обработке PDF-файлов, например создание PDF, объединение PDF, сравнение PDF и т. д. Одним словом, эта библиотека упрощает процесс и позволяет разработчикам сосредоточиться на создании мощных приложений, выполняющих задачи по манипулированию PDF-файлами.

Смотрите также