Convertir un PDF en différents formats d'image en C#

Aperçu

Cet article explique comment convertir un PDF en différents formats d’image en utilisant C#. Il couvre les sujets suivants.

C# Convertir un PDF en image

Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.

Aspose.PDF for .NET utilise plusieurs approches pour convertir un PDF en image. En général, nous utilisons deux approches : la conversion utilisant l’approche Device et la conversion utilisant SaveOption. Cette section vous montrera comment convertir des documents PDF en formats d’image tels que BMP, JPEG, GIF, PNG, EMF, TIFF et SVG en utilisant l’une de ces approches.

Il existe plusieurs classes dans la bibliothèque qui vous permettent d’utiliser un dispositif virtuel pour transformer des images. DocumentDevice est orienté vers la conversion de l’ensemble du document, mais ImageDevice - pour une page particulière.

Convertir un PDF en utilisant la classe DocumentDevice

Aspose.PDF for .NET permet de convertir des pages PDF en images TIFF.

La classe TiffDevice (basée sur DocumentDevice) vous permet de convertir des pages PDF en images TIFF. Cette classe fournit une méthode nommée Process qui vous permet de convertir toutes les pages d’un fichier PDF en une seule image TIFF.

Convertir les pages PDF en une seule image TIFF

Aspose.PDF for .NET explique comment convertir toutes les pages d’un fichier PDF en une seule image TIFF :

Convertir un PDF en TIFF

  1. Créez un objet de la classe Document.
  2. Créez des objets TiffSettings et TiffDevice.
  3. Appelez la méthode TiffDevice.Process() pour convertir le document PDF en TIFF.
  4. Pour définir les propriétés du fichier de sortie, utilisez la classe TiffSettings.

Le code suivant montre comment convertir toutes les pages PDF en une seule image TIFF.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTIFF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTIFF.pdf"))
    {
        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.None,
            Depth = Aspose.Pdf.Devices.ColorDepth.Default,
            Shape = Aspose.Pdf.Devices.ShapeType.Landscape,
            SkipBlankPages = false
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, dataDir + "PDFtoTIFF_out.tif");
    }
}

Convertir une page en image TIFF

Aspose.PDF for .NET permet de convertir une page particulière d’un fichier PDF en une image TIFF, utilisez une version surchargée de la méthode Process(..) qui prend un numéro de page comme argument pour la conversion. Le code suivant montre comment convertir la première page d’un PDF en format TIFF.

  1. Créez un objet de la classe Document.
  2. Créez des objets TiffSettings et TiffDevice.
  3. Appelez la méthode surchargée TiffDevice.Process() avec les paramètres fromPage et toPage pour convertir les pages du document PDF en TIFF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTiffSinglePage()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTiffSinglePage.pdf"))
    {
        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.None,
            Depth = Aspose.Pdf.Devices.ColorDepth.Default,
            Shape = Aspose.Pdf.Devices.ShapeType.Landscape,
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, 1, 1, dataDir + "PDFtoTiffSinglePage_out.tif");
    }
}

Utiliser l’algorithme de Bradley lors de la conversion

Aspose.PDF for .NET prend en charge la fonctionnalité de conversion de PDF en TIF en utilisant la compression LZW et ensuite avec l’utilisation d’AForge, la binarisation peut être appliquée. Cependant, l’un des clients a demandé que pour certaines images, ils aient besoin d’obtenir le seuil en utilisant Otsu, donc ils souhaiteraient également utiliser Bradley.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoTiffBradleyBinarization()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoTiffBradleyBinarization.pdf"))
    {
        string outputImageFile = dataDir + "PDFtoTiffBradleyBinarization_out.tif";
        string outputBinImageFile = dataDir + "PDFtoTiffBradleyBinarization-bin_out.tif";

        // Create Resolution object
        var resolution = new Aspose.Pdf.Devices.Resolution(300);

        // Create TiffSettings object
        var tiffSettings = new Aspose.Pdf.Devices.TiffSettings
        {
            Compression = Aspose.Pdf.Devices.CompressionType.LZW,
            Depth = Aspose.Pdf.Devices.ColorDepth.Format1bpp
        };

        // Create TIFF device
        var tiffDevice = new Aspose.Pdf.Devices.TiffDevice(resolution, tiffSettings);

        // Convert a particular page and save the image to stream
        tiffDevice.Process(document, outputImageFile);

        // Binarize the image using Bradley method
        using (var inStream = new FileStream(outputImageFile, FileMode.Open))
        {
            using (var outStream = new FileStream(outputBinImageFile, FileMode.Create))
            {
                tiffDevice.BinarizeBradley(inStream, outStream, 0.1);
            }
        }
    }
}

Convertir un PDF en utilisant la classe ImageDevice

ImageDevice est l’ancêtre de BmpDevice, JpegDevice, GifDevice, PngDevice et EmfDevice.

  • La classe BmpDevice vous permet de convertir des pages PDF en images BMP.
  • La classe EmfDevice vous permet de convertir des pages PDF en images EMF.
  • La classe JpegDevice vous permet de convertir des pages PDF en images JPEG.
  • La classe PngDevice vous permet de convertir des pages PDF en images PNG.
  • La classe GifDevice vous permet de convertir des pages PDF en images GIF.

Voyons comment convertir une page PDF en image.

La classe BmpDevice fournit une méthode nommée Process qui vous permet de convertir une page particulière du fichier PDF en format d’image BMP. Les autres classes ont la même méthode. Donc, si nous devons convertir une page PDF en image, nous instancions simplement la classe requise.

  1. Chargez le fichier PDF en utilisant la classe Document.
  2. Créez une instance de la sous-classe de ImageDevice, c’est-à-dire :
    • BmpDevice (pour convertir un PDF en BMP).
    • EmfDevice (pour convertir un PDF en Emf).
    • JpegDevice (pour convertir un PDF en JPG).
    • PngDevice (pour convertir un PDF en PNG).
    • GifDevice (pour convertir un PDF en GIF).
  3. Appelez la méthode ImageDevice.Process() pour effectuer la conversion de PDF en image.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFusingImageDevice()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Create Resolution object            
    var resolution = new Aspose.Pdf.Devices.Resolution(300);
    var bmpDevice = new Aspose.Pdf.Devices.BmpDevice(resolution);
    var jpegDevice = new Aspose.Pdf.Devices.JpegDevice(resolution);
    var gifDevice = new Aspose.Pdf.Devices.GifDevice(resolution);
    var pngDevice = new Aspose.Pdf.Devices.PngDevice(resolution);
    var emfDevice = new Aspose.Pdf.Devices.EmfDevice(resolution);

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "ConvertAllPagesToBmp.pdf"))
    {
        ConvertPDFtoImage(bmpDevice, "bmp", document, dataDir);
        ConvertPDFtoImage(jpegDevice, "jpeg", document, dataDir);
        ConvertPDFtoImage(gifDevice, "gif", document, dataDir);
        ConvertPDFtoImage(pngDevice, "png", document, dataDir);
        ConvertPDFtoImage(emfDevice, "emf", document, dataDir);
    }
}

private static void ConvertPDFtoImage(ImageDevice imageDevice,
        string ext, Document document, var dataDir)
{
    for (int pageCount = 1; pageCount <= document.Pages.Count; pageCount++)
    {
        using (FileStream imageStream =
            new FileStream($"{dataDir}image{pageCount}_out.{ext}",
            FileMode.Create))
        {
            // Convert a particular page and save the image to stream
            imageDevice.Process(document.Pages[pageCount], imageStream);
        }
    }
}

Convertir un PDF en utilisant la classe SaveOptions

Cette partie de l’article vous montre comment convertir un PDF en SVG en utilisant C# et la classe SaveOptions.

Scalable Vector Graphics (SVG) est une famille de spécifications d’un format de fichier basé sur XML pour des graphiques vectoriels en deux dimensions, à la fois statiques et dynamiques (interactifs ou animés). La spécification SVG est une norme ouverte qui est en développement par le World Wide Web Consortium (W3C) depuis 1999.

Les images SVG et leurs comportements sont définis dans des fichiers texte XML. Cela signifie qu’elles peuvent être recherchées, indexées, scriptées et, si nécessaire, compressées. En tant que fichiers XML, les images SVG peuvent être créées et modifiées avec n’importe quel éditeur de texte, mais il est souvent plus pratique de les créer avec des programmes de dessin tels qu’Inkscape.

Aspose.PDF for .NET prend en charge la fonctionnalité de conversion d’images SVG en format PDF et offre également la capacité de convertir des fichiers PDF en format SVG. Pour accomplir cette exigence, la classe SvgSaveOptions a été introduite dans l’espace de noms Aspose.PDF. Instanciez un objet de SvgSaveOptions et passez-le comme deuxième argument à la méthode Document.Save(..).

Le code suivant montre les étapes pour convertir un fichier PDF en format SVG avec .NET.

Convertir un PDF en SVG

  1. Créez un objet de la classe Document.
  2. Créez un objet SvgSaveOptions avec les paramètres nécessaires.
  3. Appelez la méthode Document.Save() et passez-lui l’objet SvgSaveOptions pour convertir le document PDF en SVG.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoSVG()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFtoSVG.pdf"))
    {
        // Instantiate an object of SvgSaveOptions
        var saveOptions = new Aspose.Pdf.SvgSaveOptions
        {
            // Do not compress SVG image to Zip archive
            CompressOutputToZipArchive = false,
            TreatTargetFileNameAsDirectory = true                
        };

        // Save SVG file
        document.Save(dataDir + "PDFToSVG_out.svg", saveOptions);
    }
}