IRONSOFTWAREHOME
USANDO O IRONPDF

Como Mesclar Arrays de Bytes de PDF em C#

Curtis Chau
Curtis Chau
Updated: 20 de junho de 2026

Para exibir PDFs em aplicativos Blazor , use o componente visualizador de PDF do IronPDF, que se integra aos aplicativos Blazor Server e oferece renderização de PDF de alto desempenho com recursos como preenchimento de formulários, anotações e suporte para dispositivos móveis — tudo isso sem depender de ferramentas de navegador de terceiros.

Por que um aplicativo Blazor precisa de um visualizador de PDF dedicado?

Exibir PDFs em aplicações web modernas exige um componente visualizador confiável que vá além das capacidades básicas de um navegador. Para desenvolvedores .NET que criam aplicativos Blazor , o IronPDF oferece uma solução eficaz de visualização de PDF que se integra ao seu aplicativo Blazor Server . Isso possibilita a renderização de PDFs de alto desempenho e funcionalidades avançadas sem depender de ferramentas de terceiros do navegador.

O suporte nativo a PDF nos navegadores varia significativamente entre diferentes navegadores e plataformas, resultando em experiências de usuário inconsistentes. Ao implementar um visualizador de PDF personalizado em seu aplicativo Blazor , você obtém controle total sobre a experiência de visualização, garantindo funcionalidade consistente em todas as plataformas. Isso é particularmente importante para aplicações que exigem padrões de conformidade e recursos avançados de segurança.

O framework Blazor -- construído sobre o ASP.NET Core da Microsoft -- permite o desenvolvimento baseado em componentes, que se integra naturalmente com bibliotecas de manipulação de PDF. Em vez de incorporar um widget de visualização de terceiros a partir de uma CDN externa, você pode criar um componente personalizado para atender aos requisitos exatos do seu aplicativo.

Como instalar o IronPDF em um projeto Blazor ?

Antes de implementar seu visualizador de PDF Blazor , instale o IronPDF. Adicione-o ao seu aplicativo Blazor Server por meio do NuGet, usando o Console do Gerenciador de Pacotes ou a CLI do .NET :

PM > Install-Package IronPdf

dotnet add package IronPdf

Em seguida, crie um novo aplicativo Blazor e certifique-se de ter a versão mais recente do .NET instalada. Armazene arquivos PDF na pasta wwwroot para fácil acesso, ou carregue-os de outras fontes, como matrizes de bytes ou URLs. A visão geral da instalação fornece orientações detalhadas para vários cenários de implantação.

Quais são os pré-requisitos necessários?

Para implementar com sucesso um visualizador de PDF em Blazor , certifique-se de ter:

  • .NET 10 instalado em sua máquina de desenvolvimento
  • Visual Studio 2022 ou Visual Studio Code com extensões C#
  • Chave de licença do IronPDF (disponível através de um período de teste gratuito )
  • Compreensão básica da estrutura de componentes do Blazor.
  • Um arquivo PDF de amostra para teste (coloque-o na pasta wwwroot)

Para implantação no Windows , certifique-se de ter o ambiente de execução do Visual C++ apropriado. Usuários de Linux devem instalar as dependências necessárias, enquanto desenvolvedores de macOS precisam considerar a compatibilidade entre Intel e Apple Silicon.

Onde os arquivos PDF devem ser armazenados?

O local de armazenamento de arquivos PDF impacta significativamente o desempenho e a segurança do seu aplicativo. Para aplicações Blazor , considere estas opções:

  • Pasta wwwroot : Ideal para PDFs estáticos sem informações sensíveis.
  • Armazenamento de Blobs do Azure : Para aplicações em nuvem que exigem armazenamento flexível.
  • Banco de dados como matrizes de bytes : Adequado para PDFs menores que exigem controle de acesso.
  • Diretórios de servidor protegidos : Ideal para documentos confidenciais com requisitos de segurança
  • Fluxos de memória : Ideal para PDFs gerados dinamicamente usando HTML para PDF

Como criar um componente visualizador de PDF em Blazor ?

Crie um componente básico de visualização de PDF em Blazor que possa exibir documentos PDF. Crie um novo componente Razor em seu projeto:

@page "/pdfviewer"
@rendermode InterativoServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment

<h3>PDF Viewer Component</h3>
<div>
    <button @onclick="LoadPdfDocument">Open File</button>
    <div id="pdfContainer">
        @if (!string.IsNullOrEmpty(pdfUrl))
        {
            <iframe src="@pdfUrl" style="width:100%; height:600px;"></iframe>
        }
    </div>
</div>

@code {
    private string pdfUrl = "";
    private byte[] pdfData = Array.Empty<byte>();

    private async Task LoadPdfDocument()
    {
        var pdfDocument = PdfDocument.FromFile("wwwroot/sample.pdf");
        pdfData = pdfDocument.BinaryData;
        var base64 = Convert.ToBase64String(pdfData);
        pdfUrl = $"data:application/pdf;base64,{base64}";
    }
}

Este código cria um componente visualizador de PDF que carrega um documento PDF e o exibe usando um iframe. O método LoadPdfDocument lê um PDF da pasta wwwroot e o converte para um URL de dados base64 que o iframe renderiza diretamente. Essa abordagem funciona bem com diversas versões de PDF e suporta a codificação UTF-8 para documentos internacionais.

Como o componente carrega arquivos PDF?

O componente utiliza os recursos de carregamento de documentos do IronPDF para ler arquivos PDF de forma eficiente. Quando um usuário clica no botão "Abrir arquivo", o método é o seguinte:

  1. Carrega o arquivo PDF usando PdfDocument.FromFile
  2. Extrai dados binários do documento PDF carregado.
  3. Converte para o formato Base64 para compatibilidade com navegadores.
  4. Cria um URL de dados que os navegadores podem renderizar diretamente.

Essa abordagem garante a compatibilidade entre diferentes navegadores, mantendo um bom desempenho na exibição de PDFs. O componente é compatível com diversos tamanhos de papel e orientações de página .

Saída

Captura de tela de um componente visualizador de PDF em Blazor exibindo um PDF de amostra com o conteúdo 'O que é um PDF?', mostrando controles de navegação, opções de zoom e um botão Abrir Arquivo.

Como usar a interoperabilidade JavaScript para melhorar a exibição de PDFs?

Para um melhor controle sobre a exibição do conteúdo do PDF, utilize a interoperabilidade com JavaScript para gerenciar a funcionalidade do visualizador de PDF. Esse padrão carrega um módulo JavaScript de forma assíncrona e delega a renderização às APIs nativas de blob/URL do navegador — uma técnica muito adequada ao ciclo de vida de componentes do Blazor:

@page "/pdf-jsinterop"
@rendermode InterativoServer
@using IronPdf
@inject IJSRuntime JSRuntime
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment
@implements IAsyncDisposable

<h3>IronPDF JavaScript Interop Viewer</h3>
<p>Displays PDF using JavaScript Blob/ObjectURL capabilities.</p>

@if (!string.IsNullOrEmpty(ErrorMessage))
{
    <div class="alert alert-danger">Error: @ErrorMessage</div>
}

<div id="@documentId" style="border: 1px solid #ccc; width: 100%; min-height: 600px;">
    Loading PDF...
</div>

@code {
    private string documentId = Guid.NewGuid().ToString();
    private string ErrorMessage = string.Empty;
    private bool pdfLoaded = false;
    private IJSObjectReference? jsModule;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender && !pdfLoaded)
        {
            try
            {
                jsModule = await JSRuntime.InvokeAsync<IJSObjectReference>(
                    "import", "./pdfViewerInterop.js");
                await LoadPdfWithJavaScript();
                pdfLoaded = true;
            }
            catch (Exception ex)
            {
                ErrorMessage = $"Failed to load JS module: {ex.Message}";
            }
            finally
            {
                StateHasChanged();
            }
        }
    }

    private async Task LoadPdfWithJavaScript()
    {
        if (jsModule is null) return;
        var pdfPath = Path.Combine(WebHostEnvironment.WebRootPath, "sample.pdf");
        if (!File.Exists(pdfPath))
        {
            ErrorMessage = $"File not found: {pdfPath}";
            return;
        }
        var pdf = PdfDocument.FromFile(pdfPath);
        await jsModule.InvokeVoidAsync("displayPdf", documentId, pdf.BinaryData);
    }

    public async ValueTask DisposeAsync()
    {
        if (jsModule is not null)
            await jsModule.DisposeAsync();
    }
}

Adicione a função JavaScript correspondente ao seu arquivo wwwroot/pdfViewerInterop.js. Note que este arquivo usa JavaScript (não C#), salvo como um módulo .js:

export function displayPdf(elementId, data) {
    const blob = new Blob([new Uint8Array(data)], { type: 'application/pdf' });
    const url = URL.createObjectURL(blob);
    const container = document.getElementById(elementId);
    if (!container) return;
    container.innerHTML = '';
    const iframe = document.createElement('iframe');
    iframe.src = url;
    iframe.style.width = '100%';
    iframe.style.height = '600px';
    iframe.style.border = 'none';
    container.appendChild(iframe);
}

Esta função JavaScript cria um blob a partir dos dados do PDF, gera um URL de objeto e anexa um iframe ao contêiner. A técnica suporta renderização em JavaScript e atrasos de renderização personalizados para documentos complexos.

Saída

Interface do Visualizador de Interop JavaScript do IronPDF mostrando um documento PDF com o conteúdo 'O que é um PDF?' exibido, demonstrando capacidades de renderização de PDF com Blob/ObjectURL JavaScript

Como carregar PDFs de múltiplas fontes?

Seu visualizador de PDF Blazor pode recuperar e exibir documentos PDF de diversas fontes. O exemplo abaixo mostra o carregamento a partir de uma URL e de conteúdo HTML:

private async Task LoadFromUrl(string url)
{
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(30);
    var response = await client.GetAsync(url);
    response.EnsureSuccessStatusCode();
    var stream = await response.Content.ReadAsStreamAsync();
    var pdfDocument = new PdfDocument(stream);
    await DisplayPdfContent(pdfDocument);
}

private async Task LoadFromHtmlContent()
{
    var renderer = new ChromePdfRenderer();
    var htmlContent = "<h1>Generated PDF</h1><p>Dynamic content from Blazor.</p>";
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    await DisplayPdfContent(pdfDocument);
}

private Task DisplayPdfContent(PdfDocument document)
{
    var data = document.BinaryData;
    pdfUrl = $"data:application/pdf;base64,{Convert.ToBase64String(data)}";
    return Task.CompletedTask;
}

O método LoadFromUrl recupera documentos PDF de locais remotos, enquanto LoadFromHtmlContent mostra como converter HTML em PDF instantaneamente. O mecanismo de renderização do Chrome garante uma conversão precisa de HTML. Outras opções de origem incluem o Armazenamento de Blobs do Azure, fluxos de memória do banco de dados e documentos DOCX .

Qual método de origem é o mais adequado para o seu caso de uso?

Métodos de origem PDF para aplicações Blazor
Tipo de fonteIdeal paraDesempenhoSegurança
Arquivos locaisConteúdo estáticoExcelenteBaixo
URLsDocumentos externosBomMédio
Conversão de HTMLRelatórios dinâmicosVariávelAlto
Armazenamento de BlobsAplicativos empresariaisExcelenteAlto
Fluxos de memóriaPDFs temporáriosExcelenteAlto

Saída usando conteúdo HTML

Interface de teste do IronPDF demonstra a geração bem-sucedida de PDF a partir de conteúdo HTML, com opções para carregar de URL ou gerar a partir de HTML visíveis no topo.

Como adicionar recursos interativos a um visualizador de PDF?

Amplie o visualizador de PDF com funcionalidades de navegação de página, rotação, impressão e download:

@code {
    private int currentPage = 1;
    private int totalPages;
    private byte[] pdfData = Array.Empty<byte>();
    private string pdfUrl = "";
    private string rotationClass = "";
    private string documentId = Guid.NewGuid().ToString();

    private async Task NavigateToPage(int page)
    {
        currentPage = page;
        await JSRuntime.InvokeVoidAsync("navigateTo", page);
    }

    private void RotateCounterclockwise()
    {
        rotationClass = "rotate-270";
    }

    private async Task PrintPdf()
    {
        await JSRuntime.InvokeVoidAsync("printDocument", documentId);
    }

    private async Task DownloadPdf()
    {
        await JSRuntime.InvokeVoidAsync("downloadFile", pdfData, "document.pdf");
    }
}

Este código adiciona funcionalidades de navegação de página, rotação , impressão e download . Considere adicionar números de página e marcadores para documentos com muita navegação. Funcionalidades avançadas podem incluir extração de texto e conversão de PDF para HTML.

Saída

Um componente visualizador de PDF com todos os recursos construído com Blazor, exibindo controles de navegação do documento, funcionalidade de zoom ajustada para 100%, e botões de ação personalizados incluindo Carregar Arquivo PDF, Imprimir, Baixar e opções de Rotação

Como você lida com formulários e anotações em PDF?

Para documentos PDF com campos de formulário e anotações , o IronPDF oferece suporte robusto para leitura e gravação programática de valores de campos:

private async Task ProcessFormFields()
{
    var pdfDocument = PdfDocument.FromFile("form.pdf");

    foreach (var field in pdfDocument.Form.Fields)
    {
        if (field.Type == PdfFormFieldType.Text)
        {
            field.Value = "User Input";
        }
    }

    await DisplayPdfContent(pdfDocument);
}

private async Task SaveFormData()
{
    var pdfWithFormData = PdfDocument.FromFile("filled-form.pdf");
    var formData = pdfWithFormData.Form.Fields
        .ToDictionary(f => f.Name, f => f.Value);

    var json = System.Text.Json.JsonSerializer.Serialize(formData);
    await File.WriteAllTextAsync("form-data.json", json);

    pdfWithFormData.Form.Flatten();
    pdfWithFormData.SaveAs("form-submission.pdf");
}

Isso possibilita o preenchimento de formulários dentro do visualizador de PDF do Blazor , permitindo que os usuários interajam com os campos do formulário diretamente no navegador. O código percorre os campos do formulário e define os valores programaticamente, o que é ideal para aplicações que exigem preenchimento prévio dinâmico. O IronPDF também suporta assinaturas digitais e anotações de texto.

Os tipos de campos suportados incluem entradas de texto, caixas de seleção, botões de opção, listas suspensas, campos de assinatura digital, áreas de texto com várias linhas e seletores de data.

Quando usar o preenchimento programático em vez do preenchimento interativo de formulários?

Comparação de abordagens para preenchimento de formulários
AbordagemUsar quandoBenefícios
ProgramáticoPreenchimento prévio de dados conhecidosMais rápido, consistente e automatizado.
InterativoEntrada de dados do usuário necessáriaValidação flexível e imediata
HíbridoDados parciais disponíveisO melhor dos dois mundos

Considere compactar os formulários após o envio para evitar adulteração. Utilize a sanitização de PDFs para segurança.

Saída

Exemplo de funcionalidade de preenchimento de formulários do componente visualizador de PDF, mostrando como os usuários podem interagir com formulários PDF diretamente no navegador

Como otimizar o desempenho de PDFs grandes?

Para garantir um bom desempenho na exibição de PDFs, especialmente para arquivos grandes, utilize carregamento em partes e gerenciamento de memória:

private async Task LoadLargePdf()
{
    const int chunkSize = 1024 * 1024; // 1MB chunks
    var pdfPath = "largefile.pdf";

    using var fileStream = File.OpenRead(pdfPath);
    var buffer = new byte[chunkSize];
    var chunks = new List<byte[]>();
    int bytesRead;

    while ((bytesRead = await fileStream.ReadAsync(buffer)) > 0)
    {
        var chunk = new byte[bytesRead];
        Array.Copy(buffer, chunk, bytesRead);
        chunks.Add(chunk);
    }

    await ProcessPdfChunks(chunks);
}

Essa abordagem carrega arquivos PDF grandes em partes, evitando problemas de memória e garantindo um desempenho estável mesmo com documentos volumosos. É particularmente útil ao lidar com arquivos PDF em dispositivos móveis ou sistemas com recursos limitados. Consulte o guia de desempenho do IronPDF para opções adicionais de ajuste.

Estratégias adicionais de otimização incluem linearização para visualização rápida na web, compressão para reduzir o tamanho dos arquivos e processamento assíncrono para lidar com vários PDFs simultaneamente. De acordo com as melhores práticas da PDF Association , PDFs linearizados (otimizados para a web) podem reduzir o tempo de carregamento inicial em 30 a 60% para documentos grandes.

Qual o tamanho de arquivo que requer carregamento em partes?

Guia de Estratégia de Carregamento de Tamanho de Arquivo PDF
Tamanho do arquivoEstratégia de carregamentoImpacto na memória
Menos de 5 MBCarregamento diretoMínimo
5 a 20 MBFragmentação opcionalModerado
20 a 50 MBDivisão recomendadaSignificativo
Mais de 50 MBDivisão em partes necessáriaCrítico

A renderização no servidor torna-se vantajosa ao processar PDFs maiores que 100 MB, implementar anotações complexas ou suportar múltiplos usuários simultâneos.

Como proteger um visualizador de PDF Blazor para arquivos protegidos por senha?

Ao trabalhar com arquivos PDF protegidos por senha, passe a senha diretamente para PdfDocument.FromFile e configure os cabeçalhos de segurança HTTP apropriados:

private async Task LoadSecurePdf(string password)
{
    var pdfDocument = PdfDocument.FromFile("secure.pdf", password);

    var headers = new Dictionary<string, string>
    {
        { "X-Frame-Options", "SAMEORIGIN" },
        { "Content-Segurança-Policy", "default-src 'self'" },
        { "X-Content-Type-Options", "nosniff" },
        { "Referrer-Policy", "no-referrer" }
    };

    await DisplayPdfContent(pdfDocument);
}

Este código demonstra o carregamento de documentos PDF protegidos por senha , mantendo a segurança através da configuração adequada do cabeçalho. Considere assinaturas digitais para uma autenticação aprimorada. Implemente a higienização de PDFs para remover conteúdo potencialmente malicioso e ocultar informações confidenciais.

Ao lidar com senhas, nunca as armazene em texto simples ou em código do lado do cliente. Utilize métodos de entrada seguros com validação adequada, implemente tempos limite de sessão para documentos confidenciais e apague as senhas da memória após o uso. As diretrizes de segurança do ASP.NET Core da Microsoft recomendam sempre validar e higienizar quaisquer credenciais fornecidas pelo usuário antes de passá-las para APIs subsequentes.

Decriptação do lado do cliente versus decriptação do lado do servidor

Comparação de segurança das abordagens de descriptografia de PDF
Tipo de descriptografiaCaso de usoNível de segurança
Lado do clienteDocumentos públicosBaixo
Lado do servidorDados sensíveisAlto
HíbridoConteúdo mistoMédio

Para máxima segurança, sempre realize a descriptografia no servidor e transmita o conteúdo descriptografado para o cliente de forma segura. Implementar a conformidade com o formato PDF/A para atender às necessidades de arquivamento a longo prazo.

Quais são os principais pontos a serem considerados ao exibir PDFs em Blazor?

Implementar um visualizador de PDF em Blazor com IronPDF oferece aos desenvolvedores uma solução completa para exibir PDFs em aplicações web. Desde a visualização básica até recursos avançados como preenchimento de formulários e anotações, o componente de visualização de PDF do IronPDF oferece a funcionalidade necessária para aplicações profissionais.

Os exemplos apresentados demonstram como criar um visualizador de PDF Blazor confiável que lida com diversas fontes de PDF, oferece recursos interativos e mantém um bom desempenho. Seja para criar um visualizador de documentos simples ou um sistema complexo de gerenciamento de documentos, a integração do IronPDF com aplicativos Blazor Server facilita a implementação de recursos profissionais de visualização de PDFs.

Os principais benefícios incluem:

  • Compatibilidade multiplataforma com renderização consistente em todos os navegadores
  • Recursos avançados de segurança para documentos confidenciais
  • Otimização de desempenho para arquivos grandes por meio de carregamento assíncrono e em partes.
  • Funcionalidades completas para preenchimento de formulários, incluindo assinaturas digitais
  • Integração perfeita com aplicações .NET existentes

O IronPDF é compatível com Azure, AWS, Docker e ambientes Windows tradicionais. Pronto para construir seu próprio visualizador? Comece com um teste gratuito do IronPDF e consulte a documentação completa e os exemplos de código para criar experiências eficazes de visualização de PDFs em seus aplicativos Blazor .

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.