C# Convertir un tableau d'octets de fichier PDF

Byte Array est utile pour stocker ou transmettre des données. De même, le format de fichier PDF est populaire en raison de ses fonctionnalités et de sa compatibilité. Vous pouvez convertir un fichier PDF en tableau d’octets ainsi qu’un tableau d’octets en fichier PDF en utilisant le langage C#. Cela peut vous aider à stocker et à archiver plus efficacement les fichiers PDF dans la base de données. Vous pouvez également sérialiser les données en travaillant avec le Byte Array. Explorons l’inter-convertibilité de ces formats.

Conversion de fichier PDF en tableau d’octets et tableau d’octets en fichier PDF - Installation de l’API

Aspose.PDF for .NET L’API offre de nombreuses fonctionnalités pour travailler avec des documents PDF. Vous pouvez créer, modifier, manipuler ou convertir des fichiers PDF avec des appels d’API simples et faciles. Pour convertir des fichiers PDF en Byte Array ou vice versa, vous devez installer l’API soit en la téléchargeant depuis le site officiel, soit depuis la galerie NuGet à l’aide de la commande d’installation ci-dessous dans Visual Studio IDE.

PM> Install-Package Aspose.Pdf

Convertir un fichier PDF en tableau d’octets à l’aide de C#

Vous pouvez convertir un PDF en Byte Array afin de le transmettre ou de le stocker pour un traitement ultérieur. Par exemple, vous devrez peut-être sérialiser un document PDF, puis le convertir en un tableau d’octets peut vous aider. Vous devez suivre les étapes ci-dessous pour convertir un PDF en un tableau d’octets :

  1. Charger le fichier PDF d’entrée
  2. Initialiser un tableau d’octets
  3. Initialiser l’objet FileStream
  4. Charger le contenu du fichier dans le tableau d’octets

Après avoir suivi toutes ces étapes, vous pouvez maintenant traiter le fichier PDF sous la forme d’un tableau d’octets. Par exemple, vous pouvez le passer à une autre fonction comme dans l’exemple ci-dessous.

Le code suivant montre comment convertir un fichier PDF en un tableau d’octets à l’aide de C# où le ByteArray résultant est transmis à une méthode de conversion du fichier d’entrée en images :

dataDir = @"D:\Test\";

// Charger le fichier PDF d'entrée
string inputFile = dataDir + @"testpdf.pdf";

// Initialiser un tableau d'octets
byte[] buff = null;

// Initialiser l'objet FileStream
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Charger le contenu du fichier dans le tableau d'octets
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Travailler avec le fichier PDF dans un tableau d'octets
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // Ouvrir le document
    using (MemoryStream InputStream = new MemoryStream(PDFBlob))
    {
        Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(InputStream);

        for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
        {

            using (FileStream imageStream = new FileStream(dataDir + "image" + pageCount + "_out" + ".jpg", FileMode.Create))
            {
                // Créer un périphérique JPEG avec des attributs spécifiés
                // Largeur, Hauteur, Résolution, Qualité
                // Qualité [0-100], 100 est maximum
                // Créer un objet de résolution

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = nouveau JpegDevice(500, 700, résolution, 100);

                // ajouté ce qui suit pour déterminer si paysage ou non
                Int32 height, width = 0;

                PdfFileInfo info = new PdfFileInfo(pdfDocument);
                width = Convert.ToInt32(info.GetPageWidth(pdfDocument.Pages[pageCount].Number));
                height = Convert.ToInt32(info.GetPageHeight(pdfDocument.Pages[pageCount].Number));


                Aspose.Pdf.Devices.JpegDevice jpegDevice =
                //nouveau Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // Convertir une page particulière et enregistrer l'image à diffuser

                //Aspose.Pdf.PageSize.A4.IsLandscape = vrai;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // Fermer le flux
                imageStream.Close();
            }
        }
    }
}

Convertir un tableau d’octets en fichier PDF à l’aide de C#

Allons encore plus loin, un Byte Array peut être converti en un fichier PDF. Apprenons cela par l’exemple de la conversion d’une image en tant que Byte Array en un fichier PDF. Vous devez suivre les étapes suivantes pour convertir un tableau d’octets en fichier PDF.

  1. Charger le fichier d’entrée
  2. Initialiser le tableau d’octets
  3. Charger l’image d’entrée dans le tableau d’octets
  4. Initialiser une instance de la classe Document
  5. Ajouter une image sur une page PDF
  6. Enregistrer le fichier PDF de sortie

Le code suivant explique comment convertir un tableau d’octets en fichier PDF par programmation à l’aide de C# :

// Charger le fichier d'entrée
string inputFile = dataDir + @"Test.PNG";

// Initialiser le tableau d'octets
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Charger l'image d'entrée dans le tableau d'octets
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Ajouter une page à la collection de pages du document
Page page = doc.Pages.Add();
// Charger le fichier image source dans l'objet Stream
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Instanciation d'un objet BitMap avec un flux d'images chargé
Bitmap b = new Bitmap(mystream);

// Définissez les marges pour que l'image s'adapte, etc.
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Left = 0;
page.PageInfo.Margin.Right = 0;

page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height);
// Créer un objet image
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Ajouter l'image dans la collection de paragraphes de la section
page.Paragraphs.Add(image1);
// Définir le flux du fichier image
image1.ImageStream = mystream;

// Enregistrer le fichier PDF résultant
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Fermer l'objet memoryStream
mystream.Close();

Conclusion

Dans cet article, nous avons exploré comment convertir un fichier PDF en tableau d’octets ainsi qu’un tableau d’octets en fichier PDF à l’aide du langage de programmation C#. Si vous souhaitez travailler davantage avec le fichier PDF, veuillez nous faire part de vos besoins via Forum d’assistance gratuit. De plus, vous pouvez également explorer la Documentation API et les Références API pour une analyse approfondie des fonctionnalités offertes par l’API. Nous sommes impatients de vous contacter !

Voir également