Como Incorporar um Visualizador de Documentos Sem Plugin em ASP.NET
10/07/2026

Como Incorporar um Visualizador de Documentos Sem Plugin em ASP.NET

Um guia passo a passo para engenheiros .NET que precisam incorporar o visualizador de documentos seguro e sem plugins do Doconut App em projetos ASP.NET Core, MVC ou WebForms.

Você pode incorporar um visualizador de documentos sem plugin em uma aplicação ASP.NET Core, MVC ou WebForms sem pedir a nenhum usuário que instale nada.
Empresas que fornecem contratos, desenhos ou ativos de design precisam de um visualizador que respeite as políticas de segurança corporativa e nunca obrigue os usuários a instalar plugins legados do navegador. Doconut fornece um SDK de visualizador de documentos .NET para fluxos de trabalho baseados em navegador com PDF, Office, CAD, e‑mail e imagens. Não é um serviço hospedado que você chama: você o instala em sua própria aplicação, e ele renderiza lá. Este post descreve as decisões de integração sem depender de código de exemplo específico de versão.

Uma primeira clarificação, porque os dois produtos são fáceis de confundir. Doconut.app é o visualizador web gratuito — um arquivo, aberto em uma aba do navegador, excluído depois. Não é algo que você incorpora. O que você incorpora é o Doconut Viewer, o SDK, e tudo abaixo trata disso.

Visualizador de documentos incorporado conectado a um backend ASP.NET controlado
Visualizador de documentos incorporado conectado a um backend ASP.NET controlado

1. Por que segurança e renderização sem plugins são importantes para aplicativos web .NET

Empresas modernas tratam cada documento como um potencial vazamento de dados. Quando você incorpora um visualizador que depende de ActiveX, Flash ou um cliente nativo, você herda três riscos:

RiscoImpacto na sua aplicação .NETComo o Doconut App elimina isso
Dependência de pluginOs usuários precisam instalar ou habilitar um plugin do navegador, gerando tickets de suporte e dores de cabeça de conformidade.Doconut funciona totalmente em HTML5/Canvas, exigindo zero plugins.
Trânsito não criptografadoOs arquivos trafegam por HTTP ou são armazenados em texto puro, violando GDPR, HIPAA ou políticas internas.O SDK roda dentro da sua aplicação, portanto o transporte e o armazenamento permanecem sob a política de TLS e criptografia que você já aplica. Doconut não adiciona nenhum salto extra.
Ciclo de vida descontroladoOs arquivos podem permanecer no servidor, aumentando a superfície de violação.A retenção é definida por você, pois os documentos nunca deixam seu ambiente. A saída de renderização temporária é gravada onde você configurar e limpa conforme sua agenda.

O fato arquitetural que importa é que o SDK é instalado no seu próprio ambiente e não faz chamadas aos servidores da Doconut. Nada é enviado para nós, portanto não há processador de terceiros a ser adicionado a um mapa de dados e nenhuma política de retenção de fornecedor a conciliar com a sua.

2. Prepare o projeto .NET

Use o pacote, a documentação e os exemplos que correspondam à versão do Doconut selecionada para o projeto. A página oficial de download do Doconut é o ponto de partida confiável.

Antes da integração, confirme o runtime .NET alvo, registre a versão do pacote, mantenha a configuração de licença fora do controle de versão e comece com documentos representativos. ASP.NET Core, MVC e WebForms têm ciclos de vida de aplicação diferentes, portanto suas configurações não devem ser tratadas como idênticas.

3. Construindo um endpoint de upload seguro – AES‑256, SSL e exclusão automática

O SDK pode ler um documento de um caminho físico, um stream, um array de bytes, um banco de dados, uma URL, um local de intranet ou um provedor de nuvem como S3, Azure Storage, Google Cloud ou Dropbox. O que ele nunca deve ler é um caminho escolhido pelo navegador. Insira uma verificação de autorização entre a requisição e o documento, independentemente da origem. Abaixo está um formato comum para esse endpoint em ASP.NET Core; as mesmas ideias se aplicam ao MVC e ao WebForms.

// Exemplo de endpoint de upload seguro em ASP.NET Core
[ApiController]
[Route("api/[controller]")]
public class DocumentController : ControllerBase
{
    private readonly IHostingEnvironment _env;
    private readonly IAuthorizationService _authService;

    public DocumentController(IHostingEnvironment env, IAuthorizationService authService)
    {
        _env = env;
        _authService = authService;
    }

    [HttpPost("upload")]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        // Verifica se o usuário tem permissão para fazer upload
        var authResult = await _authService.AuthorizeAsync(User, "CanUploadDocuments");
        if (!authResult.Succeeded)
            return Forbid();

        if (file == null || file.Length == 0)
            return BadRequest("Nenhum arquivo enviado.");

        // Gera um nome de arquivo temporário seguro
        var tempFileName = Path.GetRandomFileName() + Path.GetExtension(file.FileName);
        var tempPath = Path.Combine(_env.ContentRootPath, "App_Data", "TempUploads", tempFileName);

        // Salva o arquivo em disco de forma criptografada (AES‑256)
        using (var fileStream = new FileStream(tempPath, FileMode.CreateNew))
        using (var cryptoStream = new CryptoStream(fileStream,
            new AesManaged { KeySize = 256 }.CreateEncryptor(),
            CryptoStreamMode.Write))
        {
            await file.CopyToAsync(cryptoStream);
        }

        // Aqui você chamaria o SDK da Doconut para renderizar o documento
        // var renderResult = DoconutSdk.RenderDocument(tempPath, ...);

        // Opcional: excluir o arquivo temporário imediatamente ou agendar limpeza
        System.IO.File.Delete(tempPath);

        // Retorna o resultado da renderização ou um identificador para o cliente
        return Ok(new { Message = "Upload concluído e documento processado." });
    }
}

Fluxo de trabalho do lado do servidor

  1. Aceitar o arquivo enviado – Use o padrão IFormFile (ou HttpPostedFile em WebForms) para receber o documento do cliente.
  2. Criptografar o arquivo com AES‑256 – Antes de persistir o fluxo, criptografe‑o usando uma biblioteca comprovada como System.Security.Cryptography.Aes. Armazene o blob criptografado em um local seguro (por exemplo, Azure Blob Storage com criptografia do lado do servidor habilitada, ou um bucket S3 com SSE‑AES256).
  3. Gerar uma URL assinada de curta duração – Crie uma URL válida por alguns minutos (ex.: 5 minutos). A URL deve ser HTTPS e incluir um token criptográfico que o Doconut pode validar. A maioria dos provedores de armazenamento em nuvem oferece um recurso de “URL pré‑assinada” que atende a essa necessidade.
  4. Retornar a URL assinada ao cliente – Envie uma resposta JSON contendo a URL. O cliente entregará essa URL ao visualizador Doconut.
  5. Programar exclusão automática – Após a expiração da URL assinada, um job em segundo plano (Hangfire, Azure Functions, etc.) remove o blob criptografado, garantindo que o arquivo não permaneça no servidor.

Equivalentes MVC / WebForms

  • MVC – Coloque a mesma lógica dentro de uma ação de controlador regular e retorne JsonResult.
  • WebForms – Implemente um manipulador .ashx ou um método de página que siga os mesmos passos: receba Request.Files[0], criptografe, gere uma URL pré‑assinada e escreva a resposta JSON.

A única diferença está na sintaxe de roteamento; o fluxo de segurança permanece idêntico.


4. Renderizar o documento através do SDK instalado

Mantenha o acesso ao documento no servidor e imponha autorização antes de processar um arquivo ou fluxo. A sequência exata de renderização e inicialização da UI é específica da versão; siga a documentação oficial fornecida com a compilação instalada em vez de copiar uma API JavaScript global não verificada.

Por que isso funciona em qualquer variante .NET

  • ASP.NET Core Razor – A inicialização vive na mesma view que hospeda o formulário de upload, portanto há apenas uma página para considerar.
  • MVC – Use @section Scripts para injetar o mesmo trecho; o controlador retorna JSON que o $.ajax do MVC pode consumir.
  • WebForms – Registre o script com ClientScript.RegisterStartupScript após a conclusão do upload e, então, chame launchViewer da mesma forma.

A renderização ocorre no seu servidor, e esse é o objetivo: o navegador recebe páginas renderizadas em vez do documento original, razão pela qual um DWG ou um PSD abre em uma máquina que não possui AutoCAD nem Photoshop. Dimensione o servidor adequadamente — um PDF escaneado de 300 páginas exige trabalho real, e agora é a sua camada que o executa.


5. Personalizando o visualizador para combinar com seu portal

Empresas geralmente precisam que o visualizador pareça parte do produto em que está inserido, e não uma janela para o produto de outra pessoa. A aparência do visualizador e o conjunto de controles que ele expõe são configuráveis, e quais opções existem depende da compilação que você instalou.

Obtenha os nomes dessas opções na documentação fornecida com sua versão, em vez de um post de blog. As superfícies de configuração do visualizador são exatamente o tipo de coisa que é renomeada entre releases, e um trecho copiado de um artigo com duas versões de diferença falha de um modo que parece um problema de licenciamento.

A decisão que vale a pena tomar antes de abrir essa documentação é quais controles cada função deve ver. Se um usuário pode imprimir, baixar ou apenas navegar pelas páginas de um documento é uma questão de permissão que sua aplicação já conhece a resposta. Configure o visualizador a partir dessa resposta, em vez de expor todos os controles e esperar que ninguém clique.


6. Desempenho e escalabilidade – manter a experiência ágil

Incorporar um visualizador em um portal de alto tráfego levanta duas preocupações práticas: tempo de carregamento e renderização concorrente. O Doconut App aborda ambos prontamente, mas você pode reforçar o envelope de desempenho com alguns truques específicos do .NET.

PreocupaçãoO que fazer
Latência da primeira páginaO carregamento automático de página permite que o leitor veja a primeira página enquanto o restante ainda está sendo preparado. Habilite a compressão de arquivos estáticos (app.UseResponseCompression()) e faça cache dos ativos do cliente.
Visualizações repetidas de um mesmo arquivoUm documento frequentemente aberto pode ser renderizado uma vez e servido a partir do cache de saída em vez de ser re‑renderizado a cada requisição. O FAQ cobre a opção .DCN exatamente para isso.
Custo de renderizaçãoRenderizar é trabalho do servidor. Reduzir a resolução da imagem onde a fidelidade não é crítica é a alavanca única maior, e isso é uma mudança de configuração, não de código.
ConcorrênciaRevise as configurações de timeout e AutoClose sob carga, e leia os exemplos de farm de web antes de assumir que um único nó será suficiente. Limite a taxa do endpoint de upload.

Meça com seus próprios documentos. Um PDF baseado em texto de 5 MB e uma digitalização de 5 MB do mesmo relatório comportam‑se de forma totalmente diferente, e apenas um deles aparece em um benchmark sintético.

Principais pontos

  • Doconut Viewer é um SDK .NET sem plugins que funciona com ASP.NET Core, MVC e WebForms. Seus usuários não precisam instalar nada.
  • Ele é instalado no seu próprio ambiente e não faz chamadas aos servidores Doconut, portanto os documentos permanecem dentro do limite que você já controla.
  • A segurança de transporte, a criptografia em repouso e a retenção são definidas por você, pois o arquivo nunca sai da sua infraestrutura. Doconut não se torna um processador no seu mapa de dados.
  • O catálogo do SDK contém 75 extensões de arquivo em 18 famílias — PDF, Office, CAD, Visio, Project, e‑mail, eBook e imagens, com DICOM por meio de seu próprio plugin.
  • A renderização ocorre no servidor. Isso é o que permite que um navegador abra um DWG, e também é o item de referência para dimensionamento.
  • Os controles que o usuário vê — impressão, download ou apenas paginação — devem seguir as permissões que sua aplicação já possui.
  • Obtenha os nomes das opções de configuração na documentação da versão instalada, nunca de um artigo.

Perguntas comuns

Q1: Eu preciso instalar algo no servidor?
R: Sim. Doconut Viewer é um SDK .NET que você instala na sua aplicação — comece pela página de download e use o pacote e a documentação da versão que você selecionou. Não há nenhum endpoint hospedado para chamar, e nada é servido a partir de um CDN Doconut.

Q2: Quem exclui o arquivo após a visualização?
R: Você mesmo. Como o documento e qualquer saída de renderização temporária vivem no seu ambiente, a retenção é uma configuração na sua aplicação, e não uma promessa de um fornecedor. Decida onde os arquivos temporários são gravados e o que os remove, antes de colocar em produção.

Q3: Os usuários podem imprimir o documento?
R: A impressão é uma capacidade do visualizador, e pode ser concedida ou restrita por usuário. Observe que a impressão controlada faz parte do próprio visualizador — não é um dos quatro plugins licenciados, que são Anotação, Conversor, DICOM e Busca.

Q4: Ele pode converter um documento para outro formato?
R: Esse é o plugin Conversor, licenciado separadamente. Visualizar e converter são produtos diferentes aqui, e vale a pena deixar claro qual deles o fluxo de trabalho realmente precisa.

Pronto para incorporar um visualizador de documentos sem plugins na sua aplicação .NET? Comece pela página de download Doconut — a licença de avaliação é gratuita. E se o que você realmente precisava era abrir um arquivo hoje, o Doconut.app faz isso em uma aba do navegador e o exclui depois.