C# Converter matriz de bytes de arquivo PDF

Byte Array é útil para armazenar ou transmitir dados. Da mesma forma, o formato de arquivo PDF é popular por causa de seus recursos e compatibilidade. Você pode converter um arquivo PDF em uma matriz de bytes, bem como uma matriz de bytes em um arquivo PDF usando a linguagem C#. Isso pode ajudá-lo a armazenar e arquivar arquivos PDF no banco de dados com mais eficiência. Você também pode serializar os dados trabalhando com o Byte Array. Vamos explorar a interconversibilidade desses formatos.

Conversão de arquivo PDF para matriz de bytes e matriz de bytes para arquivo PDF – Instalação da API

Aspose.PDF for .NET API oferece muitos recursos para trabalhar com documentos PDF. Você pode criar, editar, manipular ou converter arquivos PDF com chamadas de API simples e fáceis. Para converter arquivos PDF em Byte Array ou vice-versa, você precisa instalar a API baixando-a do site oficial ou da galeria NuGet usando o comando de instalação abaixo no Visual Studio IDE.

PM> Install-Package Aspose.Pdf

Converter arquivo PDF para matriz de bytes usando C#

Você pode converter PDF em Byte Array para transmiti-lo ou armazená-lo para processamento posterior. Por exemplo, você pode precisar serializar um documento PDF e convertê-lo em uma matriz de bytes pode ajudar. Você precisa seguir as etapas abaixo para converter PDF em uma matriz de bytes:

  1. Carregar arquivo PDF de entrada
  2. Inicializar uma matriz de bytes
  3. Inicialize o objeto FileStream
  4. Carregar o conteúdo do arquivo na matriz de bytes

Depois de seguir todos esses passos, agora você pode processar o arquivo PDF na forma de uma matriz de bytes. Por exemplo, você pode passá-lo para outra função como o exemplo abaixo.

O código a seguir mostra como converter um arquivo PDF em uma matriz de bytes usando C#, onde o ByteArray resultante é passado para um método para converter o arquivo de entrada em imagens:

dataDir = @"D:\Test\";

// Carregar arquivo PDF de entrada
string inputFile = dataDir + @"testpdf.pdf";

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

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

// Carregar o conteúdo do arquivo na matriz de bytes
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Trabalhar com o arquivo PDF na 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))
            {
                // Criar dispositivo JPEG com atributos especificados
                // Largura, Altura, Resolução, Qualidade
                // Qualidade [0-100], 100 é o máximo
                // Criar objeto de resolução

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = new JpegDevice(500, 700, resolução, 100);

                // adicionou o seguinte para determinar se paisagem ou não
                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 =
                //new Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // Converta uma página específica e salve a imagem para transmitir

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

Converter matriz de bytes para arquivo PDF usando C#

Vamos prosseguir mais um passo, um Byte Array pode ser convertido em um arquivo PDF. Vamos aprender isso com o exemplo da conversão de uma imagem como um Byte Array para um arquivo PDF. Você precisa seguir as etapas a seguir para converter uma matriz de bytes em um arquivo PDF.

  1. Carregar arquivo de entrada
  2. Inicializar matriz de bytes
  3. Carregar imagem de entrada no Byte Array
  4. Inicialize uma instância da classe Document
  5. Adicionar imagem em uma página PDF
  6. Salvar arquivo PDF de saída

O código a seguir explica como converter uma matriz de bytes em arquivo PDF programaticamente usando C#:

// Carregar arquivo 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;

// Carregar imagem de entrada no Byte Array
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Adicionar uma página à coleção de páginas do documento
Page page = doc.Pages.Add();
// Carregar o arquivo de imagem de origem para o objeto Stream
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Instanciar objeto BitMap com fluxo de imagem carregado
Bitmap b = new Bitmap(mystream);

// Defina as margens para que a imagem caiba, 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);
// Criar um objeto de imagem
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Adicione a imagem na coleção de parágrafos da seção
page.Paragraphs.Add(image1);
// Definir o fluxo do arquivo de imagem
image1.ImageStream = mystream;

// Salve o arquivo PDF resultante
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Fechar objeto memoryStream
mystream.Close();

Conclusão

Neste artigo, exploramos como converter um arquivo PDF em uma matriz de bytes, bem como uma matriz de bytes em um arquivo PDF usando a linguagem de programação C#. Se você estiver interessado em trabalhar ainda mais com o arquivo PDF, compartilhe seus requisitos conosco por meio do Fórum de suporte gratuito. Além disso, você também pode explorar a Documentação da API e Referências da API para uma análise aprofundada dos recursos oferecidos pela API. Estamos ansiosos para entrar em contato com você!

Veja também