C# Converti matrice di byte di file PDF

Byte Array è utile per archiviare o trasmettere dati. Allo stesso modo, il formato di file PDF è popolare per le sue caratteristiche e compatibilità. Puoi convertire un file PDF in un array di byte e un array di byte in un file PDF usando il linguaggio C#. Questo può aiutarti a memorizzare e archiviare i file PDF nel database, in modo più efficiente. Puoi anche serializzare i dati lavorando con Byte Array. Esploriamo l’interconvertibilità di questi formati.

Conversione da file PDF a array di byte e da array di byte a file PDF - Installazione API

Aspose.PDF for .NET L’API offre molte funzionalità per lavorare con i documenti PDF. Puoi creare, modificare, manipolare o convertire file PDF con chiamate API semplici e facili. Per convertire i file PDF in Byte Array o viceversa, è necessario installare l’API scaricandola dal sito Web ufficiale o dalla galleria NuGet usando il comando di installazione seguente nell’IDE di Visual Studio.

PM> Install-Package Aspose.Pdf

Converti file PDF in array di byte usando C#

È possibile convertire PDF in Byte Array per trasmetterlo o archiviarlo per un’ulteriore elaborazione. Ad esempio, potrebbe essere necessario serializzare un documento PDF, quindi convertirlo in un array di byte può essere d’aiuto. È necessario seguire i passaggi seguenti per convertire il PDF in un array di byte:

  1. Carica file PDF di input
  2. Inizializza una matrice di byte
  3. Inizializza l’oggetto FileStream.
  4. Carica il contenuto del file nell’array di byte

Dopo aver seguito tutti questi passaggi, ora puoi elaborare il file PDF sotto forma di array di byte. Ad esempio, puoi passarlo a un’altra funzione come nell’esempio seguente.

Il codice seguente mostra come convertire un file PDF in una matrice di byte utilizzando C# in cui il risultante ByteArray viene passato a un metodo per convertire il file di input in immagini:

dataDir = @"D:\Test\";

// Carica il file PDF di input
string inputFile = dataDir + @"testpdf.pdf";

// Inizializza una matrice di byte
byte[] buff = null;

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

// Carica il contenuto del file nell'array di byte
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Lavora con il file PDF nell'array di byte
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // Apri documento
    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))
            {
                // Crea un dispositivo JPEG con attributi specificati
                // Larghezza, Altezza, Risoluzione, Qualità
                // Qualità [0-100], 100 è il massimo
                // Crea oggetto Risoluzione

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = new JpegDevice(500, 700, risoluzione, 100);

                // aggiunto quanto segue per determinare se orizzontale o meno
                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 =
                //nuovo Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // Converti una pagina particolare e salva l'immagine per lo streaming

                //Aspose.Pdf.PageSize.A4.IsLandscape = true;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // Chiudi flusso
                imageStream.Close();
            }
        }
    }
}

Converti matrice di byte in file PDF usando C#

Procediamo un altro passo oltre, un Byte Array può essere convertito in un file PDF. Impariamo questo dall’esempio di conversione di un’immagine come Byte Array in un file PDF. È necessario seguire i seguenti passaggi per convertire una matrice di byte in un file PDF.

  1. Carica file di input
  2. Inizializza matrice di byte
  3. Carica l’immagine di input in Byte Array
  4. Inizializza un’istanza della classe Document.
  5. Aggiungi un’immagine su una pagina PDF
  6. Salva file PDF di output

Il codice seguente spiega come convertire una matrice di byte in file PDF a livello di codice utilizzando C#:

// Carica file di input
string inputFile = dataDir + @"Test.PNG";

// Inizializza matrice di byte
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Carica l'immagine di input in Byte Array
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Aggiungi una pagina alla raccolta di pagine del documento
Page page = doc.Pages.Add();
// Carica il file immagine di origine nell'oggetto Stream
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Crea un'istanza dell'oggetto BitMap con il flusso di immagini caricato
Bitmap b = new Bitmap(mystream);

// Imposta i margini in modo che l'immagine si adatti, ecc.
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);
// Crea un oggetto immagine
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Aggiungi l'immagine nella raccolta di paragrafi della sezione
page.Paragraphs.Add(image1);
// Imposta il flusso del file immagine
image1.ImageStream = mystream;

// Salva il file PDF risultante
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Chiudere l'oggetto memoryStream
mystream.Close();

Conclusione

In questo articolo, abbiamo esplorato come convertire file PDF in Byte Array e Byte Array in file PDF utilizzando il linguaggio di programmazione C#. Se sei interessato a lavorare ulteriormente con il file PDF, condividi gentilmente le tue esigenze con noi tramite Forum di supporto gratuito. Inoltre, puoi anche esplorare la Documentazione API e Riferimenti API per un’analisi approfondita delle funzionalità offerte dall’API. Non vediamo l’ora di metterti in contatto con te!

Guarda anche