PDF

Um visualizador de PDF que não entrega o PDF

O visualizador de PDF embutido no navegador funciona entregando o arquivo ao usuário. Para um contrato, um prontuário médico ou uma proposta selada, isso costuma ser exatamente o que você está tentando evitar. Doconut renderiza as páginas no servidor e envia imagens, de modo que visualizar e possuir deixam de ser a mesma ação.

0
bytes do PDF original enviados ao cliente
100%
renderização no servidor
1
visualizador para todos os outros formatos também

O problema

Três maneiras de exibir um PDF e o que cada uma custa

Servir o arquivo e deixar o navegador renderizá‑lo: a mais simples, e entrega ao usuário os bytes originais, os metadados, os anexos incorporados e a capacidade de encaminhá‑los com um único clique.

Distribuir um motor de PDF em JavaScript: mantém o arquivo no navegador também, adiciona um download significativo ao seu pacote e ainda deixa a cargo de você implementar a barra de ferramentas, a barra de miniaturas e a caixa de busca.

Renderizar no servidor e enviar imagens: o usuário vê as páginas, o arquivo nunca sai da sua infraestrutura, e o mesmo mecanismo funciona para Word, Excel, CAD e e‑mail — que costuma ser a exigência que surge duas sprints depois.

Capacidades

O que o visualizador faz com um PDF

Imagens de página paginadas

Cada página é rasterizada no servidor e entregue sob demanda. Documentos grandes abrem na primeira página em vez de esperar o download completo do arquivo.

Busca na camada de texto

Com o plugin AdvancedSearch, a busca em texto completo ocorre na camada de texto do PDF, de modo que os resultados aparecem na página correta com o destaque adequado.

Miniaturas e navegação

Uma barra de miniaturas, saltos de página, zoom e ajuste à largura vêm com o widget. Defina showThumbs e FitType e siga em frente.

Anotações

Com o plugin Annotation: realces, comentários, carimbos e assinaturas, armazenados e exportados pela sua aplicação em vez de incorporados de volta ao arquivo original.

Arquivos protegidos por senha

PDFs criptografados são abertos no servidor com uma senha fornecida pelo seu código. A senha nunca chega ao navegador.

Impressão sob seu controle

A impressão é uma funcionalidade do visualizador que você pode disponibilizar ou restringir, o que difere da decisão de permitir que o usuário baixe o original.

Integração

Abrindo um PDF

O cliente recebe apenas o token. Ele nunca descobre o nome do arquivo, a localização de armazenamento ou que o documento era um PDF e não outro item do catálogo.

Extensões suportadas

.pdf
csharp
// Server-side: returns an opaque token, never a path or a URL
app.MapPost("/api/open", async (Viewer viewer) =>
{
    string token = await viewer.OpenDocumentAsync("wwwroot/files/Contract.pdf");
    return Results.Ok(new { token });
});

// For an encrypted PDF, supply the password server-side —
// it is used to decrypt in your process and goes no further.

Detalhes

Especificidades do PDF

  • A busca na camada de texto requer o plugin AdvancedSearch; OCR não está geralmente disponível e não deve ser presumido para páginas escaneadas.
  • Anotações requerem o plugin Annotation e são armazenadas pela sua aplicação, não gravadas de volta no PDF original.
  • Converter PDF para Word, Excel ou imagem requer o plugin Converter e DocumentConverter.ConvertAsync().

Perguntas frequentes

O usuário ainda pode baixar o PDF original?

Só se você implementar isso por conta própria. O visualizador entrega imagens de página endereçadas por um token opaco, portanto liberar o arquivo fonte continua sendo uma decisão explícita no seu código, e não um efeito colateral de permitir que alguém o leia.

Ele funciona em PDFs escaneados sem camada de texto?

Eles são renderizados como imagens, mas não há nada para buscar. OCR está disponível apenas através do plugin AdvancedSearch e não é geralmente acessível — o motor está sendo reestruturado, portanto não planeje contar com ele atualmente.

Qual o tamanho máximo de PDF que ele pode lidar?

As páginas são renderizadas e entregues sob demanda, não todas de uma vez, portanto o comprimento do documento afeta a memória muito menos do que a complexidade das páginas. Páginas vetoriais muito pesadas são o principal fator de custo, não a quantidade de páginas.

Experimente com seus próprios documentos

Uma licença temporária leva alguns minutos para ser solicitada e funciona totalmente na sua própria máquina. Os arquivos que importam são os que já estão quebrando seu visualizador atual.