Como linearizar PDFs usando C# com IronPDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

Os PDFs linearizados permitem a exibição instantânea da primeira página durante o download, melhorando drasticamente a experiência do usuário com documentos grandes. O IronPDF oferece métodos simples para criar e verificar PDFs em C#, otimizando seus documentos para visualização rápida na web.

Um PDF linearizado, também conhecido como "Visualização Rápida para Web" ou "PDF otimizado para a web", é estruturalmente reorganizado para transmissão pela internet. Isso permite que um visualizador compatível exiba a primeira página de um documento quase instantaneamente, bem antes que o arquivo inteiro termine de ser baixado.

Em aplicações de missão crítica ou com restrições de tempo, esse recurso é especialmente útil. Elimina os tempos de carregamento frustrantes para documentos grandes, especialmente em redes lentas ou móveis, permitindo que os usuários interajam com o conteúdo imediatamente. Isso facilita a tomada de decisões mais rápidas e aumenta a produtividade em ambientes Professional . Quando combinadas com os recursos de otimização de desempenho do IronPDF , elas proporcionam uma experiência de visualização excepcional.

Neste artigo explicativo, exploraremos as opções que o IronPDF oferece aos desenvolvedores para exportar seus documentos como PDFs linearizados.

Início Rápido: Linearize seu PDF para visualização mais rápida na web

Comece a usar o IronPDF para linearizar seus PDFs sem esforço. Este exemplo de código simples mostra como otimizar um PDF para carregamento mais rápido em navegadores da web usando o método LinearizePdf do IronPDF. Melhore a experiência do usuário permitindo que as páginas sejam exibidas à medida que carregam, em vez de esperar que o documento inteiro seja baixado. Siga os passos abaixo para otimizar seus PDFs e torná-los mais eficientes para compartilhamento online.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    var pdf = IronPdf.PdfDocument.FromFile("input.pdf");
    pdf.SaveAsLinearized(pdf.BinaryData, "linearized.pdf");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita

    arrow pointer


Como faço para salvar um PDF linearizado?

Salvar um documento como PDF linearizado com o IronPDF é um processo rápido e fácil. Antes de começar, certifique-se de ter instalado o IronPDF via NuGet ou por meio de um dos outros métodos de instalação disponíveis.

Neste exemplo, vamos renderizar uma string HTML em um PDF usando RenderHtmlAsPdf. Para documentos HTML mais complexos, você pode explorar os recursos de conversão de HTML para PDF do IronPDF . Em seguida, salvaremos o objeto PdfDocument como um PDF linearizado usando o método de instância SaveAsLinearized, passando o caminho do arquivo de saída como um argumento de string.

:path=/static-assets/pdf/content-code-examples/how-to/linearize-pdf.cs
using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>");

// Get the PDF binary data
var pdfBytes = pdf.BinaryData;

// Save the PDF binary data as a linearized PDF file
PdfDocument.SaveAsLinearized(pdfBytes, "linearize-from-bytes.pdf");
Imports IronPdf

' Instantiate Renderer
Dim renderer As New ChromePdfRenderer()

' Create a PDF from an HTML string using VB.NET
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Pdf Bytes</h1>")

' Get the PDF binary data
Dim pdfBytes = pdf.BinaryData

' Save the PDF binary data as a linearized PDF file
PdfDocument.SaveAsLinearized(pdfBytes, "linearize-from-bytes.pdf")
$vbLabelText   $csharpLabel

Esse processo reestrutura o formato interno do PDF, colocando informações críticas no início do arquivo, o que permite o download e a renderização progressivos. É particularmente vantajoso ao disponibilizar PDFs por meio de aplicações web.

Qual é a aparência do resultado?

A caixa de diálogo de propriedades do PDF mostra a configuração

Como faço para salvar bytes de um PDF linearizados?

Além de salvar um objeto PdfDocument diretamente, o IronPDF também permite que os usuários convertam uma matriz de bytes de um PDF em um PDF linearizado. Essa flexibilidade é particularmente útil ao trabalhar com PDFs armazenados em bancos de dados ou ao processar PDFs em aplicativos que consomem muita memória. Para obter mais informações sobre como trabalhar com PDFs na memória, consulte nosso guia sobre como carregar PDFs a partir de fluxos de memória .

Neste exemplo, demonstraremos a renderização de uma string HTML em um objeto PdfDocument, obtendo seu array de bytes e, em seguida, salvando esses dados como um PDF linearizado usando a sobrecarga SaveAsLinearized que aceita uma entrada byte[], um caminho de saída e uma senha opcional.

Qual é a aparência do resultado?

Este é o arquivo gerado pelo código:

Como faço para salvar um MemoryStream como linearizado?

A sobrecarga SaveAsLinearized que aceita uma entrada Stream ainda grava a saída linearizada em um arquivo no caminho de saída especificado. Isso é útil quando o PDF de origem já está em um fluxo (de um banco de dados, rede ou buffer na memória) e você deseja persistir o resultado linearizado em disco.

Neste exemplo, vamos converter um objeto PdfDocument em uma matriz de bytes, escrevê-lo em um MemoryStream e, em seguida, salvar o fluxo como um arquivo PDF linearizado para demonstrar essa capacidade.

Se você precisar evitar completamente a gravação em disco (para atender aos requisitos de HIPAA, PCI-DSS, aplicativos em sandbox ou funções em nuvem com sistemas de arquivos somente leitura), consulte os métodos em memória na próxima seção.

Este é o arquivo gerado pelo código:

Como faço para linearizar completamente na memória?

Para ambientes isolados, funções em nuvem ou fluxos de trabalho sensíveis à conformidade (HIPAA, PCI-DSS) onde a gravação em disco é restrita ou indesejável, o IronPDF fornece os métodos LinearizePdfToBytes e LinearizePdfToStream que retornam o PDF linearizado diretamente, sem arquivos temporários ou E/S de disco.

Esses métodos estão disponíveis tanto como métodos de instância em PdfDocument quanto como métodos estáticos que aceitam entrada em byte[] ou Stream.

Obtenha a saída linearizada em bytes.

Use LinearizePdfToBytes quando você precisar de um byte[] para uma resposta HTTP, coluna de banco de dados varbinary ou qualquer buffer de tamanho fixo.

using IronPdf;

// Instance method: linearize the current document, get bytes back
var pdf = PdfDocument.FromFile("input.pdf");
byte[] linearizedBytes = pdf.LinearizePdfToBytes();

// Static method: linearize from a byte array without instantiating PdfDocument
byte[] inputBytes = File.ReadAllBytes("input.pdf");
byte[] result = PdfDocument.LinearizePdfToBytes(inputBytes);

// Password-protected PDFs
byte[] decrypted = PdfDocument.LinearizePdfToBytes(encryptedBytes, password: "secret");
using IronPdf;

// Instance method: linearize the current document, get bytes back
var pdf = PdfDocument.FromFile("input.pdf");
byte[] linearizedBytes = pdf.LinearizePdfToBytes();

// Static method: linearize from a byte array without instantiating PdfDocument
byte[] inputBytes = File.ReadAllBytes("input.pdf");
byte[] result = PdfDocument.LinearizePdfToBytes(inputBytes);

// Password-protected PDFs
byte[] decrypted = PdfDocument.LinearizePdfToBytes(encryptedBytes, password: "secret");
Imports IronPdf

' Instance method: linearize the current document, get bytes back
Dim pdf = PdfDocument.FromFile("input.pdf")
Dim linearizedBytes As Byte() = pdf.LinearizePdfToBytes()

' Static method: linearize from a byte array without instantiating PdfDocument
Dim inputBytes As Byte() = File.ReadAllBytes("input.pdf")
Dim result As Byte() = PdfDocument.LinearizePdfToBytes(inputBytes)

' Password-protected PDFs
Dim decrypted As Byte() = PdfDocument.LinearizePdfToBytes(encryptedBytes, password:="secret")
$vbLabelText   $csharpLabel

Obtenha a saída linearizada como um fluxo

Use LinearizePdfToStream ao redirecionar a saída para outro fluxo (uploads de blobs na nuvem, corpos de resposta HTTP, sockets de rede) sem armazenar o arquivo inteiro em buffer na memória.

// Instance method: return a Stream
Stream linearizedStream = pdf.LinearizePdfToStream();

// Static method: linearize from a stream
using var inputStream = File.OpenRead("input.pdf");
Stream resultStream = PdfDocument.LinearizePdfToStream(inputStream);
// Instance method: return a Stream
Stream linearizedStream = pdf.LinearizePdfToStream();

// Static method: linearize from a stream
using var inputStream = File.OpenRead("input.pdf");
Stream resultStream = PdfDocument.LinearizePdfToStream(inputStream);
Imports System.IO

' Instance method: return a Stream
Dim linearizedStream As Stream = pdf.LinearizePdfToStream()

' Static method: linearize from a stream
Using inputStream As FileStream = File.OpenRead("input.pdf")
    Dim resultStream As Stream = PdfDocument.LinearizePdfToStream(inputStream)
End Using
$vbLabelText   $csharpLabel

Controlando a estratégia de linearização

Todos os seis métodos aceitam um parâmetro opcional LinearizationMode:

Modo Comportamento Quando usar
Automatic (padrão) Primeiro tenta o método baseado em arquivo; recorre ao método em memória se o acesso ao disco for restrito. Padrão recomendado; Funciona na maioria dos ambientes
InMemory Realiza a linearização inteiramente na memória, sem operações de entrada/saída em disco. Fluxos de trabalho HIPAA/PCI-DSS, aplicativos em sandbox, sistemas de arquivos somente leitura, funções em nuvem
FileBased Utiliza um arquivo temporário no diretório temporário do sistema. Quando você deseja explicitamente o comportamento de arquivo temporário e tem permissão de escrita.
using IronPdf;

// Force in-memory linearization (no disk I/O at all)
byte[] linearized = pdf.LinearizePdfToBytes(LinearizationMode.InMemory);
using IronPdf;

// Force in-memory linearization (no disk I/O at all)
byte[] linearized = pdf.LinearizePdfToBytes(LinearizationMode.InMemory);
Imports IronPdf

' Force in-memory linearization (no disk I/O at all)
Dim linearized As Byte() = pdf.LinearizePdfToBytes(LinearizationMode.InMemory)
$vbLabelText   $csharpLabel

ObserveArgumentException é lançado quando os bytes de entrada são nulos/vazios ou quando o fluxo de entrada não é legível. ArgumentNullException é lançado quando o fluxo de entrada é nulo.

Como faço para transmitir um PDF linearizado para uma resposta HTTP?

Combine LinearizePdfToStream com FileStreamResult do ASP.NET para fornecer um PDF otimizado para a web diretamente ao navegador, sem gravar um arquivo temporário:

:path=/static-assets/pdf/content-code-examples/how-to/linearize-pdf-http-response.cs
using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    public IActionResult DownloadReport()
    {
        var pdf = PdfDocument.FromFile("quarterly-report.pdf");
        Stream linearized = pdf.LinearizePdfToStream(LinearizationMode.InMemory);

        return new FileStreamResult(linearized, "application/pdf")
        {
            FileDownloadName = "quarterly-report.pdf"
        };
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

Public Class ReportController
    Inherits Controller

    Public Function DownloadReport() As IActionResult
        Dim pdf = PdfDocument.FromFile("quarterly-report.pdf")
        Dim linearized As Stream = pdf.LinearizePdfToStream(LinearizationMode.InMemory)

        Return New FileStreamResult(linearized, "application/pdf") With {
            .FileDownloadName = "quarterly-report.pdf"
        }
    End Function
End Class
$vbLabelText   $csharpLabel

O navegador recebe um PDF linearizado que começa a exibir a primeira página enquanto o restante é carregado automaticamente — e nenhum arquivo intermediário chega a ser gravado no disco do servidor.


Como posso verificar se um PDF está linearizado?

Além de verificar as propriedades do documento em um visualizador de PDF, como o Adobe Acrobat, para ver se um PDF está linearizado, o IronPDF também fornece uma maneira de verificar isso programaticamente com o método IsLinearized. A função recebe um parâmetro de texto para o caminho do arquivo e um segundo parâmetro de texto opcional para a senha, caso o PDF esteja criptografado. Essa capacidade de verificação é essencial para a garantia da qualidade e pode ser integrada a fluxos de trabalho de testes automatizados.

Neste exemplo, usaremos os arquivos de saída dos três exemplos acima para testar se eles estão linearizados e incluiremos um quarto PDF não linearizado para demonstrar o comportamento do método. Para técnicas mais avançadas de manipulação e verificação de PDFs, explore o conjunto abrangente de recursos do IronPDF .

Quais são os resultados?

Saída de depuração mostrando os resultados da linearização do PDF: três valores Verdadeiros e um valor Falso.

Como você pode ver, os três primeiros exemplos retornam MemoryStream, enquanto o último PDF, que não é linearizado, retorna IsLinearized.

ObserveA linearização é uma estrutura de nível de arquivo, portanto a verificação funciona em arquivos salvos via IsLinearized. Para produzir saída linearizada como bytes ou um fluxo sem gravar em disco, use os métodos LinearizePdfToBytes e LinearizePdfToStream descritos acima.

Melhores práticas para PDFs linearizados

Ao trabalhar com PDFs linearizados, considere estas boas práticas:

  1. Considerações sobre o tamanho do arquivo : A linearização pode aumentar ligeiramente o tamanho do arquivo devido ao formato reestruturado. Utilize os recursos de compressão do IronPDF para otimizar o tamanho do arquivo quando necessário.

  2. Implantação na Web : PDFs linearizados são ideais para aplicações web. Configure seu servidor web para suportar solicitações de intervalo de bytes para maximizar os benefícios da linearização.

  3. Teste de desempenho : Sempre teste PDFs linearizados no seu ambiente de destino. A melhoria de desempenho é mais perceptível com arquivos grandes em conexões mais lentas.

  4. Compatibilidade : Embora a maioria dos visualizadores de PDF modernos suporte PDFs linearizados, assegure-se de que a compatibilidade com os visualizadores preferidos dos seus usuários seja garantida.

Para obter estratégias de otimização adicionais e técnicas avançadas de manipulação de PDFs, consulte a documentação de opções de renderização do IronPDF .

Perguntas frequentes

O que é uma PDF linearizada e por que eu deveria usá-la?

Um PDF linearizado, também conhecido como "Visualização Rápida na Web" ou "PDF otimizado para a web", é estruturalmente reorganizado para streaming na internet. O recurso de linearização do IronPDF permite que visualizadores compatíveis exibam a primeira página quase instantaneamente enquanto o restante é baixado, melhorando drasticamente a experiência do usuário com documentos grandes, especialmente em redes lentas ou móveis.

Como faço para criar um PDF linearizado em C#?

Com o IronPDF, você pode criar facilmente um PDF linearizado usando o método SaveAsLinearized. Basta carregar ou criar seu documento PDF e, em seguida, chamar pdf.SaveAsLinearized(pdf.BinaryData, 'output.pdf') para salvá-lo como um PDF linearizado otimizado para visualização rápida na web.

Posso converter PDFs existentes para formato linearizado?

Sim, o IronPDF permite converter PDFs existentes para o formato linearizado. Você pode carregar qualquer PDF usando `PdfDocument.FromFile('input.pdf')`, e então usar o método `SaveAsLinearized` para salvá-lo como um PDF linearizado, melhorando o desempenho na web.

Como posso verificar se um PDF já está linearizado?

O IronPDF oferece a propriedade IsLinearized para verificar se um PDF está linearizado. Basta carregar o documento PDF e verificar a propriedade booleana IsLinearized para determinar se o documento já está otimizado para visualização rápida na web.

Quais são os principais benefícios da linearização de PDFs para aplicações web?

A linearização de PDFs com o IronPDF proporciona a exibição instantânea da primeira página, elimina os tempos de carregamento frustrantes de documentos grandes, permite uma tomada de decisão mais rápida em ambientes profissionais e melhora significativamente a experiência do usuário, principalmente em aplicações de missão crítica ou com prazos apertados.

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 ...

Leia mais
Pronto para começar?
Nuget Downloads 19,014,616 | Versão: 2026.5 just released
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.