C# Convertir matriz de bytes de archivo PDF

Byte Array es útil para almacenar o transmitir datos. Asimismo, el formato de archivo PDF es popular debido a sus características y compatibilidad. Puede convertir un archivo PDF a una matriz de bytes, así como una matriz de bytes a un archivo PDF usando el lenguaje C#. Esto puede ayudarlo a almacenar y archivar archivos PDF en la base de datos de manera más eficiente. También puede serializar los datos trabajando con Byte Array. Exploremos la interconvertibilidad de estos formatos.

Archivo PDF a matriz de bytes y matriz de bytes a conversión de archivos PDF: instalación de la API

Aspose.PDF for .NET La API ofrece muchas funciones para trabajar con documentos PDF. Puede crear, editar, manipular o convertir archivos PDF con llamadas API simples y fáciles. Para convertir archivos PDF a Byte Array o viceversa, debe instalar la API descargándola del sitio web oficial o de la galería NuGet usando el siguiente comando de instalación en Visual Studio IDE.

PM> Install-Package Aspose.Pdf

Convierta un archivo PDF a una matriz de bytes usando C#

Puede convertir PDF a Byte Array para transmitirlo o almacenarlo para su posterior procesamiento. Por ejemplo, es posible que necesite serializar un documento PDF y luego convertirlo en una matriz de bytes puede ayudar. Debe seguir los pasos a continuación para convertir PDF a una matriz de bytes:

  1. Cargar archivo PDF de entrada
  2. Inicializar una matriz de bytes
  3. Inicializar el objeto FileStream
  4. Cargue el contenido del archivo en la matriz de bytes

Después de seguir todos estos pasos, ahora puede procesar el archivo PDF en forma de matriz de bytes. Por ejemplo, puede pasarlo a otra función como el ejemplo a continuación.

El siguiente código muestra cómo convertir un archivo PDF en una matriz de bytes usando C#, donde la matriz de bytes resultante se pasa a un método para convertir el archivo de entrada en imágenes:

dataDir = @"D:\Test\";

// Cargar archivo PDF de entrada
string inputFile = dataDir + @"testpdf.pdf";

// Inicializar una matriz de bytes
byte[] buff = null;

// Inicializar objeto FileStream
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Cargue el contenido del archivo en la matriz de bytes
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Trabajar con el archivo PDF en una matriz de bytes
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // Abrir 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))
            {
                // Crear dispositivo JPEG con atributos específicos
                // Ancho, Alto, Resolución, Calidad
                // Calidad [0-100], 100 es Máximo
                // Crear objeto de resolución

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

                // agregó lo siguiente para determinar si paisaje o no
                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 =
                //nuevo Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // Convierta una página en particular y guarde la imagen para transmitir

                //Aspose.Pdf.PageSize.A4.IsLandscape = verdadero;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // Cerrar transmisión
                imageStream.Close();
            }
        }
    }
}

Convierta una matriz de bytes en un archivo PDF usando C#

Avancemos un paso más, una matriz de bytes se puede convertir en un archivo PDF. Aprendamos esto con el ejemplo de convertir una imagen como una matriz de bytes en un archivo PDF. Debe seguir los siguientes pasos para convertir una matriz de bytes en un archivo PDF.

  1. Cargar archivo de entrada
  2. Inicializar matriz de bytes
  3. Cargue la imagen de entrada en Byte Array
  4. Inicializar una instancia de la clase Document
  5. Agregar imagen en una página PDF
  6. Guardar archivo PDF de salida

El siguiente código explica cómo convertir una matriz de bytes en un archivo PDF mediante programación usando C#:

// Cargar archivo de entrada
string inputFile = dataDir + @"Test.PNG";

// Inicializar matriz de bytes
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Cargue la imagen de entrada en Byte Array
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Agregar una página a la colección de páginas del documento
Page page = doc.Pages.Add();
// Cargue el archivo de imagen de origen en el objeto Stream
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Crear una instancia del objeto BitMap con el flujo de imágenes cargado
Bitmap b = new Bitmap(mystream);

// Establezca los márgenes para que la imagen quepa, 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);
// Crear un objeto de imagen
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Agregue la imagen a la colección de párrafos de la sección.
page.Paragraphs.Add(image1);
// Establecer el flujo de archivos de imagen
image1.ImageStream = mystream;

// Guardar el archivo PDF resultante
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Cerrar objeto memoryStream
mystream.Close();

Conclusión

En este artículo, hemos explorado cómo convertir un archivo PDF a una matriz de bytes, así como una matriz de bytes a un archivo PDF usando el lenguaje de programación C#. Si está interesado en seguir trabajando con el archivo PDF, tenga la amabilidad de compartir sus requisitos con nosotros a través del Foro de soporte gratuito. Además, también puede explorar la Documentación de la API y las Referencias de la API para obtener un análisis en profundidad de las funciones que ofrece la API. ¡Esperamos ponernos en contacto con usted!

Ver también