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
- Converter arquivo PDF para matriz de bytes usando C#
- Converter matriz de bytes para arquivo PDF usando C#
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:
- Carregar arquivo PDF de entrada
- Inicializar uma matriz de bytes
- Inicialize o objeto FileStream
- 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.
- Carregar arquivo de entrada
- Inicializar matriz de bytes
- Carregar imagem de entrada no Byte Array
- Inicialize uma instância da classe Document
- Adicionar imagem em uma página PDF
- 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ê!