Ir para o conteúdo do rodapé
COMPARAçãO DE PRODUTOS

IronPDF vs PDFShift: Comparação de APIs C# para HTML e PDF

A IronPDF oferece uma biblioteca local confiável em C# com licenciamento perpétuo a partir de US$ 749, enquanto o PDFShift fornece uma API em nuvem com preços por conversão. Para startups que processam mais de 500 PDFs por mês, o IronPDF torna-se mais rentável, oferecendo maior privacidade de dados e capacidade de funcionamento offline.

O formato de documento portátil (PDF) é o padrão para representar texto, links, gráficos e muito mais em um único documento. A manipulação de PDFs em C# requer bibliotecas de PDF especializadas para aplicações .NET . Este artigo compara duas APIs diferentes para geração de PDFs, analisando seu desempenho, recursos e licenciamento. Ao desenvolver aplicações .NET , os programadores precisam de funcionalidades de geração de PDFs que lidem com layouts HTML complexos, estilos CSS e renderização em JavaScript .

As APIs de PDF discutidas são:

  • IronPDF
  • PDFShift

O que é o IronPDF?

IronPDF é uma API completa de conversão de HTML para PDF, projetada para desenvolvimento em .NET e .NET Core . A biblioteca converte sites HTML e oferece amplas funções de manipulação de PDF. O IronPDF permite que desenvolvedores criem , alterem e extraiam conteúdo de documentos PDF em ambientes .NET . A biblioteca simplifica a geração de PDFs a partir de páginas HTML e oferece suporte à conversão de CSHTML para PDF em aplicações MVC e Razor Pages .

Os arquivos PDF podem ser editados, carimbados e aprimorados com cabeçalhos e rodapés. A biblioteca simplifica a leitura de texto em PDF e a extração de imagens . O IronPDF utiliza um mecanismo .NET Chromium para renderização de HTML em PDF. Este mecanismo garante uma renderização perfeita em cada pixel e suporta tecnologias web modernas, incluindo a conversão de JavaScript para PDF . O mecanismo de renderização do Chrome representou um marco significativo em termos de precisão de renderização e otimização de desempenho .

Quais são os recursos oferecidos IronPDF ?

Quais opções de conversão para PDF estão disponíveis?

Crie PDFs a partir de HTML , strings HTML , visualizações MVC , formulários da Web e URLs . Também suporta conversões de Markdown , XML e RTF . Os recursos de conversão incluem transformações de DOCX para PDF e de imagem para PDF . Para aplicações web, o IronPDF lida com a conversão de páginas ASPX e suporta renderização CSHTML sem interface gráfica .

Como funciona a geração de imagens em PDF?

Criar imagens a partir de PDFs e PDFs a partir de imagens . Inclui extração de imagens, suporte a múltiplos formatos e impressão em PDF . Suporta gráficos SVG e imagens do Armazenamento de Blobs do Azure . A biblioteca realiza a conversão de TIFF com múltiplos quadros e oferece conversão de PDF para imagem de alta qualidade . Para processamento com uso eficiente de memória, utilize rasterização com MemoryStream .

Quais recursos de entrada/saída de arquivos estão incluídos?

O IronPDF oferece criptografia de 128 bits , proteção por senha e assinaturas digitais . Inclui assinatura HSM e conformidade com PDF/A . O marco PDF/A expandiu o suporte para formatos de arquivo, incluindo PDF/A-3 e ZUGFeRD . Recursos de segurança adicionais incluem a higienização de PDFs e o gerenciamento do histórico de revisões .

Como posso editar PDFs?

O IronPDF oferece marcas d'água , gerenciamento de páginas , planos de fundo , primeiros planos e manipulação completa de PDFs . Inclui desenho , anotações e gerenciamento de formulários . A edição avançada inclui substituição de texto , redação e transformação de páginas PDF . O marco PDFium DOM aprimora o processamento de estruturas PDF complexas.

Como extrair conteúdo de PDFs?

Extraia texto incorporado diretamente de PDFs. Para texto incorporado em imagens, use o IronOCR . O objeto DOM do PDF fornece acesso programático à estrutura do PDF. A extração avançada inclui a leitura de texto em PDF e o gerenciamento de fontes . Para análise de texto, utilize a integração com o OpenAI para processamento inteligente de documentos.

Como funcionam os cabeçalhos e rodapés?

Cabeçalhos e rodapés podem ser adicionados durante a criação ou a PDFs já existentes. Suporta cabeçalhos de texto e HTML com números de página dinâmicos. As opções avançadas incluem adicionar cabeçalhos em páginas específicas e gerenciar quebras de página . As opções de renderização oferecem controle preciso sobre o layout e o tamanho do papel .

Quais plataformas são compatíveis?

O IronPDF é compatível com sistemas operacionais e frameworks que utilizam C#:

O marco de compatibilidade ampliou o suporte à plataforma. Para obter orientações sobre a implementação, consulte IronPDF e IIS e a resolução de problemas de implementação .

O que é PDFShift?

O PDFShift é uma API de conversão de HTML para PDF que oferece conversões rápidas por meio de serviços em nuvem. A API oferece conversões paralelas, consultas assíncronas, suporte a HTML bruto e muito mais. O PDFShift é compatível com Ruby, Python, JavaScript, Node e PHP. Para desenvolvedores VB .NET ou F# , o IronPDF oferece suporte nativo, enquanto o PDFShift requer integração HTTP. Para comparação com outros serviços em nuvem, veja Aspose vs IronPDF e Syncfusion vs IronPDF .

O PDFShift permite cabeçalhos/rodapés personalizados, aplicação de CSS e criptografia de arquivos. No entanto, o serviço carece de recursos avançados de manipulação, como compressão de PDF , linearização ou conformidade com PDF/UA . Para requisitos empresariais, revise as divulgações de vulnerabilidades de segurança (CVEs) e a autenticação Kerberos .

Quais são os recursos oferecidos pelo PDFShift?

Como funcionam as conversões paralelas?

O PDFShift suporta conversões paralelas para processamento simultâneo de documentos. Para funcionalidades semelhantes, consulte o guia de assincronismo e multithreading do IronPDF. O IronPDF fornece exemplos de geração paralela de PDFs e geração multithread com benchmarks de desempenho. Os exemplos assíncronos demonstram a otimização do processamento em lote.

Quais opções de cabeçalho e rodapé estão disponíveis?

Crie cabeçalhos/rodapés personalizados com números de página e CSS/ JavaScript. O IronPDF oferece opções avançadas, incluindo cabeçalhos de tabela repetidos e cabeçalhos HTML personalizados . Os cabeçalhos de texto clássicos oferecem uma implementação simples, enquanto os cabeçalhos HTML permitem layouts complexos. Para conteúdo dinâmico, utilize listeners de mensagens JavaScript .

Posso converter HTML bruto sem tornar as páginas públicas?

O PDFShift converte HTML bruto sem páginas públicas. O IronPDF oferece funcionalidades semelhantes com configuração de URL base e incorporação de DataURI . O exemplo de imagem incorporada em base64 mostra a conversão HTML autocontida. Para conversões seguras, utilize registro personalizado e cabeçalhos de solicitação HTTP .

Qual é a qualidade do PDF?

O PDFShift cria PDFs de alta fidelidade rapidamente. O mecanismo de renderização do Chrome do IronPDF produz PDFs com qualidade de pixel perfeita, idênticos à saída do navegador. O tutorial sobre perfeição de pixels explica a otimização da qualidade. Para requisitos específicos, configure as definições da viewport e os atrasos de renderização .

Como funcionam as requisições assíncronas?

Notificações em tempo real para conclusão de conversão com integração simples. O IronPDF oferece suporte assíncrono completo com exemplos de processamento em lote. O exemplo de geração assíncrona de PDF demonstra melhorias de desempenho. Para processamento em larga escala, consulte gerenciamento de memória e assistência de desempenho .

Como faço para criar um novo projeto no Visual Studio?

Abra o Visual Studio e selecione Arquivo > Novo Projeto > Aplicativo de Console. Este exemplo utiliza uma aplicação de console. Para obter instruções de configuração, consulte a visão geral da instalação e o guia de início rápido . Os modelos de projeto adicionais incluem tutoriais do Blazor e visualização de PDFs com MAUI . Para solucionar problemas de configuração, consulte o guia rápido de solução de problemas .

Insira o nome e o caminho do projeto. Clique em Criar. Selecione a .NET Framework desejada:

Diálogo de configuração do projeto do Visual Studio mostrando as opções de configuração para um novo projeto de Aplicativo de Console (.NET Framework), com campos para nome do projeto, localização e versão do framework.

O Visual Studio gera a estrutura do aplicativo e abre o arquivo program.cs para entrada de código:

O editor Visual Studio Code exibe um modelo de aplicativo de console C# com realce de sintaxe, mostrando instruções `using` e um ponto de entrada do método `Main`.

Como faço para instalar a biblioteca IronPDF ?

Instale o IronPDF de quatro maneiras:

  • Gerenciador de Pacotes NuGet do Visual Studio
  • Linha de comando do Visual Studio
  • Download direto do NuGet
  • Download direto do IronPDF

Para métodos alternativos, consulte o guia do Windows Installer ou a instalação avançada do NuGet . Os guias específicos para cada plataforma incluem configuração do Linux , instalação no macOS e implantação do Docker . Para ambientes com restrições de espaço, utilize o IronPDF Slim .

Como faço para usar o gerenciador de pacotes NuGet do Visual Studio?

O Visual Studio fornece o NuGet Package Manager para instalação direta:

O ambiente de desenvolvimento integrado (IDE) Visual Studio Code exibindo a interface do Gerenciador de Pacotes NuGet com resultados de pesquisa e opções de instalação de pacotes para desenvolvimento .NET.

Procure por "IronPDF" no gerenciador de pacotes:

O Gerenciador de Pacotes NuGet do Visual Studio exibe os resultados da pesquisa por pacotes do IronPDF , mostrando os números de versão, a quantidade de downloads e as descrições de várias bibliotecas do IronPDF.

Selecione IronPDF e instale o pacote . Para implantações menores, considere o IronPDF Slim . Caso encontre problemas, consulte Falha ao implantar o pacote NuGet e exceções de implantação .

Como faço para usar a linha de comando do Visual Studio?

Acesse Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes:

O menu Ferramentas do Visual Studio expandiu-se com o Console do Gerenciador de Pacotes destacado, exibindo várias ferramentas de desenvolvimento e opções de conexão com o banco de dados.

Digite no console:

Install-Package IronPdf

O pacote é baixado e instalado. Para instalações específicas de plataforma, consulte Implantação no Linux , macOS ou Docker . Para erros de dependência, verifique as dependências do Chrome e as dependências do Pdfium .

Janela do Console do Gerenciador de Pacotes do Visual Studio exibindo um prompt de comando vazio com interface de tema escuro.

Posso baixar diretamente da página da NuGet ?

Baixe o pacote NuGet diretamente:

Para gerenciamento de pacotes, consulte o guia de pastas de tempo de execução do IronPDF . Se estiver enfrentando conflitos de versão, verifique a incompatibilidade de versão do assembly e a compatibilidade com o ClickOnce .

Posso baixar diretamente do site do IronPDF ?

Faça o download na página de downloads do IronPDF . Após o download:

  • Clique com o botão direito do mouse no projeto na janela de solução.
  • Selecione as referências e navegue até o arquivo.
  • Clique em OK

Para configurar o licenciamento, consulte a seção sobre como usar chaves de licença e aplicar licenças . As opções de configuração adicionais incluem definir a licença no arquivo Web.config e gerenciar as extensões de licença .

Como funciona o PDFShift?

O PDFShift opera remotamente via API. Enviar solicitações POST usando C# RestClient com autenticação de chave de API. O servidor processa as solicitações e retorna PDFs via HTTP. Para processamento local, o mecanismo nativo do IronPDF oferece melhor desempenho e segurança. Compare as opções de mecanismo nativo com as de mecanismo remoto . Para alternativas de API, veja Apryse vs IronPDF e iText vs IronPDF .

Como faço para criar PDFs a partir de HTML?

Ambas as ferramentas oferecem conversão de HTML com abordagens diferentes. O IronPDF oferece diversas opções, incluindo arquivos HTML ZIP e renderização personalizada . O tutorial sobre criação de PDFs aborda todos os métodos de geração. Para cenários avançados, explore a renderização em JavaScript e o tratamento de CSS responsivo .

Como faço para criar PDFs a partir de URLs usando o IronPDF?

A criação de PDFs a partir de URLs requer três linhas. Este exemplo de código mostra como o IronPDF permite que os desenvolvedores implementem a conversão de URL para PDF :

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure render options for better results
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.MarginTop = 25;
Renderer.RenderingOptions.MarginBottom = 25;

// Create a PDF from a URL or local file path
using var pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_68___");

// Export to a file or Stream
pdf.SaveAs("url.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure render options for better results
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.MarginTop = 25;
Renderer.RenderingOptions.MarginBottom = 25;

// Create a PDF from a URL or local file path
using var pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_68___");

// Export to a file or Stream
pdf.SaveAs("url.pdf");
Imports IronPdf

Dim Renderer = New IronPdf.ChromePdfRenderer()

' Configure render options for better results
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
Renderer.RenderingOptions.MarginTop = 25
Renderer.RenderingOptions.MarginBottom = 25

' Create a PDF from a URL or local file path
Using pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_68___")
    ' Export to a file or Stream
    pdf.SaveAs("url.pdf")
End Using
$vbLabelText   $csharpLabel

Para páginas autenticadas, consulte Logins de sites TLS . Para sites em JavaScript , use atrasos WaitFor e JavaScript personalizado . As opções avançadas incluem atrasos na renderização e conversão de JavaScript para PDF . Para otimização de desempenho, consulte as soluções para renderização inicial lenta .

Saída:

O site da Amazon Paquistão exibe um pop-up de alteração de endereço de entrega sobre uma página de compras de brinquedos e jogos, com categorias de acessórios para jogos e eletrônicos visíveis.

Como faço para converter HTML em PDF usando o IronPDF?

Converter HTML para PDF facilmente:

using IronPdf;

var pdf = new ChromePdfRenderer();

// Add custom CSS for better formatting
pdf.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
pdf.RenderingOptions.EnableJavaScript = true;

// Include web fonts and icons
pdf.RenderingOptions.WaitFor.FontsLoaded();

PdfDocument doc = pdf.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
using IronPdf;

var pdf = new ChromePdfRenderer();

// Add custom CSS for better formatting
pdf.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
pdf.RenderingOptions.EnableJavaScript = true;

// Include web fonts and icons
pdf.RenderingOptions.WaitFor.FontsLoaded();

PdfDocument doc = pdf.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
Imports IronPdf

Dim pdf = New ChromePdfRenderer()

' Add custom CSS for better formatting
pdf.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
pdf.RenderingOptions.EnableJavaScript = True

' Include web fonts and icons
pdf.RenderingOptions.WaitFor.FontsLoaded()

Dim doc As PdfDocument = pdf.RenderHtmlAsPdf("<h1>This is a heading</h1>")
doc.SaveAs("FirstPDFDocument.pdf")
$vbLabelText   $csharpLabel

Para HTML complexo, use URLs base para caminhos relativos. Adicione fontes da web e ícones para tipografia. As opções adicionais de formatação incluem fontes personalizadas e idiomas internacionais . Para solucionar problemas com fontes, consulte gerenciamento de fontes e problemas de espaçamento entre fontes .

Interface do visualizador de PDF exibindo um documento simples com o texto

Como faço para criar PDFs a partir de URLs usando o PDFShift?

A conversão de URLs com o PDFShift requer solicitações POST:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_69___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_70___",
                // Additional options
                landscape = false,
                use_print = false
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode} - {response.ErrorMessage}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_69___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_70___",
                // Additional options
                landscape = false,
                use_print = false
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode} - {response.ErrorMessage}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
Imports System
Imports RestSharp
Imports RestSharp.Authenticators
Imports System.IO

Namespace PDFShiftExample
    Module Program
        Sub Main(args As String())
            Dim client = New RestClient("___PROTECTED_URL_69___")
            client.Authenticator = New HttpBasicAuthenticator("api", "your_api_key")

            Dim request = New RestRequest(Method.POST)

            Dim json = New With {
                .source = "___PROTECTED_URL_70___",
                .landscape = False,
                .use_print = False
            }
            request.AddJsonBody(json)

            Dim response = client.Execute(request)
            If Not response.IsSuccessful Then
                ' Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode} - {response.ErrorMessage}")
            Else
                File.WriteAllBytes("result.pdf", response.RawBytes)
            End If
        End Sub
    End Module
End Namespace
$vbLabelText   $csharpLabel

Como faço para converter HTML em PDF usando o PDFShift?

O PDFShift oferece conversão de HTML para PDF:

using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_71___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            string documentContent = File.ReadAllText("document.html");
            var json = new
            {
                source = documentContent,
                // Additional formatting options
                margin = "20px",
                format = "A4"
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using System.IO;
using RestSharp;
using RestSharp.Authenticators;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_71___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            string documentContent = File.ReadAllText("document.html");
            var json = new
            {
                source = documentContent,
                // Additional formatting options
                margin = "20px",
                format = "A4"
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
                Console.WriteLine($"Error: {response.StatusCode}");
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
Imports System
Imports System.IO
Imports RestSharp
Imports RestSharp.Authenticators

Module PDFShiftExample
    Sub Main()
        Dim client = New RestClient("___PROTECTED_URL_71___")
        client.Authenticator = New HttpBasicAuthenticator("api", "your_api_key")

        Dim request = New RestRequest(Method.POST)

        Dim documentContent As String = File.ReadAllText("document.html")
        Dim json = New With {
            .source = documentContent,
            .margin = "20px",
            .format = "A4"
        }
        request.AddJsonBody(json)

        Dim response = client.Execute(request)
        If Not response.IsSuccessful Then
            ' Handle the unsuccessful response
            Console.WriteLine($"Error: {response.StatusCode}")
        Else
            File.WriteAllBytes("result.pdf", response.RawBytes)
        End If
    End Sub
End Module
$vbLabelText   $csharpLabel

Como adiciono cabeçalhos e rodapés personalizados?

Cabeçalhos e rodapés melhoram os documentos PDF, fornecendo informações consistentes em todas as páginas. Tanto o IronPDF quanto o PDFShift suportam essa funcionalidade. Para cenários avançados, consulte a seção sobre como adicionar cabeçalhos às páginas e o controle de quebra de página . O exemplo de numeração e quebra de páginas mostra a implementação completa. Para controlar o layout, explore as margens personalizadas e a orientação da página PDF .

Como adicionar cabeçalhos e rodapés usando o IronPDF?

O IronPDF oferece dois métodos para implementar cabeçalhos e rodapés :

TextHeaderFooter : Este método usa cabeçalhos baseados em texto com dados dinâmicos.

HtmlHeaderFooter : Esta abordagem permite cabeçalhos e rodapés renderizados em HTML usando modelos.

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure text header with merge fields
Renderer.RenderingOptions.FirstPageNumber = 1; // use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;

// Add HTML footer with page numbers
Renderer.RenderingOptions.HtmlFooter = new IronPdf.HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 25,
    DrawDividerLine = true
};

// Apply custom margins
Renderer.RenderingOptions.MarginTop = 40;
Renderer.RenderingOptions.MarginBottom = 40;

var pdf = Renderer.RenderHtmlAsPdf("<h1>Document with Headers</h1>");
pdf.SaveAs("headers-footers.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();

// Configure text header with merge fields
Renderer.RenderingOptions.FirstPageNumber = 1; // use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
Renderer.RenderingOptions.TextHeader.FontSize = 12;

// Add HTML footer with page numbers
Renderer.RenderingOptions.HtmlFooter = new IronPdf.HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    Height = 25,
    DrawDividerLine = true
};

// Apply custom margins
Renderer.RenderingOptions.MarginTop = 40;
Renderer.RenderingOptions.MarginBottom = 40;

var pdf = Renderer.RenderHtmlAsPdf("<h1>Document with Headers</h1>");
pdf.SaveAs("headers-footers.pdf");
Imports IronPdf

Dim Renderer = New IronPdf.ChromePdfRenderer()

' Configure text header with merge fields
Renderer.RenderingOptions.FirstPageNumber = 1 ' use 2 if a cover page will be appended
Renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Renderer.RenderingOptions.TextHeader.CenterText = "{url}"
Renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica
Renderer.RenderingOptions.TextHeader.FontSize = 12

' Add HTML footer with page numbers
Renderer.RenderingOptions.HtmlFooter = New IronPdf.HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>",
    .Height = 25,
    .DrawDividerLine = True
}

' Apply custom margins
Renderer.RenderingOptions.MarginTop = 40
Renderer.RenderingOptions.MarginBottom = 40

Dim pdf = Renderer.RenderHtmlAsPdf("<h1>Document with Headers</h1>")
pdf.SaveAs("headers-footers.pdf")
$vbLabelText   $csharpLabel

Para layouts complexos, considere usar sumário e marcadores . O exemplo de estrutura de tópicos e marcadores fornece uma estrutura de navegação. Para um posicionamento preciso, utilize o exemplo de margens personalizadas e transforme as páginas do PDF .

Como adiciono cabeçalhos e rodapés usando o PDFShift?

O PDFShift permite a personalização de documentos com cabeçalhos e rodapés para identificação ou marca:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_72___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_73___",
                footer = new { 
                    source = "<div style=\"font-size: 12px\">Page {{page}} of {{total}}</div>", 
                    spacing = "50px" 
                },
                header = new {
                    source = "<div>Company Name</div>",
                    spacing = "30px"
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_72___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_73___",
                footer = new { 
                    source = "<div style=\"font-size: 12px\">Page {{page}} of {{total}}</div>", 
                    spacing = "50px" 
                },
                header = new {
                    source = "<div>Company Name</div>",
                    spacing = "30px"
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
Imports System
Imports RestSharp
Imports RestSharp.Authenticators
Imports System.IO

Namespace PDFShiftExample
    Class Program
        Shared Sub Main(ByVal args As String())
            Dim client = New RestClient("___PROTECTED_URL_72___")
            client.Authenticator = New HttpBasicAuthenticator("api", "your_api_key")

            Dim request = New RestRequest(Method.POST)

            Dim json = New With {
                .source = "___PROTECTED_URL_73___",
                .footer = New With {
                    .source = "<div style=""font-size: 12px"">Page {{page}} of {{total}}</div>",
                    .spacing = "50px"
                },
                .header = New With {
                    .source = "<div>Company Name</div>",
                    .spacing = "30px"
                }
            }
            request.AddJsonBody(json)

            Dim response = client.Execute(request)
            If Not response.IsSuccessful Then
                ' Handle the unsuccessful response
            Else
                File.WriteAllBytes("result.pdf", response.RawBytes)
            End If
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Como adiciono marcas d'água a PDFs?

A aplicação de marcas d'água em PDFs adiciona identidade visual e segurança aos documentos. Tanto o IronPDF quanto o PDFShift suportam marcas d'água. Para opções adicionais, consulte carimbar texto e imagens e carimbar novo conteúdo . O exemplo de marca d'água em PDF demonstra técnicas avançadas. Para processamento em lote, utilize a formatação HTML eficiente .

Como adicionar marcas d'água usando o IronPDF?

O IronPDF permite adicionar marcas d'água a PDFs usando HTML. As marcas d'água podem incluir opacidade, rotação e hiperlinks. Para exemplos, consulte Exemplos de marca d'água em PDF . Para múltiplos carimbos, considere a utilização de carimbos HTML eficientes . Opções adicionais incluem exemplos de planos de fundo e primeiros planos , além de desenho de texto e bitmap .

using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_74___");

// Add text watermark with opacity and rotation
Pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", 
    IronPdf.Editing.WaterMarkLocation.MiddleCenter, 
    50, // opacity
    -45, // rotation
    "___PROTECTED_URL_75___");

// Add image watermark
Pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 
    30, // opacity
    IronPdf.Editing.VerticalAlignment.Top,
    IronPdf.Editing.HorizontalAlignment.Right);

Pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

var Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_74___");

// Add text watermark with opacity and rotation
Pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", 
    IronPdf.Editing.WaterMarkLocation.MiddleCenter, 
    50, // opacity
    -45, // rotation
    "___PROTECTED_URL_75___");

// Add image watermark
Pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 
    30, // opacity
    IronPdf.Editing.VerticalAlignment.Top,
    IronPdf.Editing.HorizontalAlignment.Right);

Pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

Dim Renderer As New IronPdf.ChromePdfRenderer()
Using Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_74___")
    
    ' Add text watermark with opacity and rotation
    Pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", 
        IronPdf.Editing.WaterMarkLocation.MiddleCenter, 
        50, ' opacity
        -45, ' rotation
        "___PROTECTED_URL_75___")
    
    ' Add image watermark
    Pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 
        30, ' opacity
        IronPdf.Editing.VerticalAlignment.Top,
        IronPdf.Editing.HorizontalAlignment.Right)
    
    Pdf.SaveAs("C:\Path\To\Watermarked.pdf")
End Using
$vbLabelText   $csharpLabel

Para marcas d'água avançadas, combine com fundos e primeiros planos ou carimbos personalizados . O exemplo de página de rosto anexada mostra a identidade visual do documento. Para um controle preciso, utilize a rotação do texto e a escala dos objetos PDF .

A página do pacote NuGet IronPDF mostra a versão 2022.6.6115 com o comando de instalação, 3,7 milhões de downloads e recursos para criação e manipulação de PDFs em C#.

Como adiciono marcas d'água usando o PDFShift?

O PDFShift permite adicionar marcas d'água aos documentos para fins de identificação:

using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_76___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_77___",
                watermark = new { 
                    image = "___PROTECTED_URL_78___", 
                    offset_x = 50, 
                    offset_y = "100px", 
                    rotate = 45,
                    opacity = 0.5
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
using System;
using RestSharp;
using RestSharp.Authenticators;
using System.IO;

namespace PDFShiftExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("___PROTECTED_URL_76___");
            client.Authenticator = new HttpBasicAuthenticator("api", "your_api_key");

            var request = new RestRequest(Method.POST);

            var json = new
            {
                source = "___PROTECTED_URL_77___",
                watermark = new { 
                    image = "___PROTECTED_URL_78___", 
                    offset_x = 50, 
                    offset_y = "100px", 
                    rotate = 45,
                    opacity = 0.5
                }
            };
            request.AddJsonBody(json);

            var response = client.Execute(request);
            if (!response.IsSuccessful)
            {
                // Handle the unsuccessful response
            }
            else
            {
                File.WriteAllBytes("result.pdf", response.RawBytes);
            }
        }
    }
}
Imports System
Imports RestSharp
Imports RestSharp.Authenticators
Imports System.IO

Namespace PDFShiftExample
    Module Program
        Sub Main(args As String())
            Dim client = New RestClient("___PROTECTED_URL_76___")
            client.Authenticator = New HttpBasicAuthenticator("api", "your_api_key")

            Dim request = New RestRequest(Method.POST)

            Dim json = New With {
                .source = "___PROTECTED_URL_77___",
                .watermark = New With {
                    .image = "___PROTECTED_URL_78___",
                    .offset_x = 50,
                    .offset_y = "100px",
                    .rotate = 45,
                    .opacity = 0.5
                }
            }
            request.AddJsonBody(json)

            Dim response = client.Execute(request)
            If Not response.IsSuccessful Then
                ' Handle the unsuccessful response
            Else
                File.WriteAllBytes("result.pdf", response.RawBytes)
            End If
        End Sub
    End Module
End Namespace
$vbLabelText   $csharpLabel

Quão bem essas ferramentas são compatíveis com Bootstrap e CSS moderno?

O desenvolvimento web moderno depende de frameworks CSS para design responsivo, e as bibliotecas de PDF devem converter esses frameworks com precisão. Consulte o guia de CSS do Bootstrap e Flex . Para um design responsivo, verifique as configurações de viewport e zoom , além de tamanhos de papel personalizados . O exemplo de tamanho de papel PDF personalizado mostra o dimensionamento preciso. Para controle de layout, explore as opções "ajustar ao papel", "zoom" e "HTML responsivo para PDF" .

O IronPDF é compatível com Bootstrap e frameworks CSS modernos?

O mecanismo de renderização do IronPDF para Chrome oferece amplo suporte a frameworks CSS:

Bootstrap 5: Flexbox completo e CSS Grid com utilitários responsivos

  • Bootstrap 4: Sistemas de cartões completos, navegação, componentes de formulário
  • Tailwind CSS: Todas as classes utilitárias e modificadores responsivos
  • Fundamentos: Sistemas completos de grades e componentes CSS3 moderno: Flexbox, Grid, propriedades personalizadas, animações, transformações

Validação: A página inicial e os modelos do Bootstrap são convertidos corretamente. Consulte o guia de opções de renderização . O IronPDF oferece suporte à conversão de Angular para PDF, assim como a outras estruturas. O suporte adicional da estrutura inclui gráficos JavaScript e renderização WebGL . Para otimização, utilize configurações de renderização HTML e formatação perfeita em pixels .

Exemplo de código: Formulário de contato com Bootstrap

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure for improve Bootstrap rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
renderer.RenderingOptions.ViewPortWidth = 1200; // Desktop viewport

string bootstrapContact = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_79___ rel='stylesheet'>
    <style>
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='row justify-content-center'>
            <div class='col-lg-8'>
                <div class='card shadow'>
                    <div class='card-header bg-primary text-white'>
                        <h2 class='mb-0'>Contact Us</h2>
                    </div>
                    <div class='card-body'>
                        <form>
                            <div class='row g-3'>
                                <div class='col-md-6'>
                                    <label class='form-label'>First Name</label>
                                    <input type='text' class='form-control' placeholder='John'>
                                </div>
                                <div class='col-md-6'>
                                    <label class='form-label'>Last Name</label>
                                    <input type='text' class='form-control' placeholder='Doe'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Email Address</label>
                                <div class='input-group'>
                                    <span class='input-group-text'>@</span>
                                    <input type='email' class='form-control' placeholder='john.doe@example.com'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Subject</label>
                                <select class='form-select'>
                                    <option>General Inquiry</option>
                                    <option>Technical Support</option>
                                    <option>Sales Question</option>
                                    <option>Partnership Opportunity</option>
                                </select>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Message</label>
                                <textarea class='form-control' rows='5' placeholder='Your message here...'></textarea>
                            </div>

                            <div class='d-flex justify-content-between align-items-center mt-4'>
                                <div class='form-check'>
                                    <input class='form-check-input' type='checkbox' id='newsletter'>
                                    <label class='form-check-label' for='newsletter'>
                                        Subscribe to newsletter
                                    </label>
                                </div>
                                <button type='submit' class='btn btn-primary px-4'>Submit</button>
                            </div>
                        </form>
                    </div>
                </div>

                <div class='alert alert-info mt-4 d-flex align-items-center' role='alert'>
                    <svg class='bi flex-shrink-0 me-2' width='24' height='24'></svg>
                    <div>We typically respond within 24 hours during business days.</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapContact);
pdf.SaveAs("contact-form.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure for improve Bootstrap rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute
renderer.RenderingOptions.ViewPortWidth = 1200; // Desktop viewport

string bootstrapContact = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_79___ rel='stylesheet'>
    <style>
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='row justify-content-center'>
            <div class='col-lg-8'>
                <div class='card shadow'>
                    <div class='card-header bg-primary text-white'>
                        <h2 class='mb-0'>Contact Us</h2>
                    </div>
                    <div class='card-body'>
                        <form>
                            <div class='row g-3'>
                                <div class='col-md-6'>
                                    <label class='form-label'>First Name</label>
                                    <input type='text' class='form-control' placeholder='John'>
                                </div>
                                <div class='col-md-6'>
                                    <label class='form-label'>Last Name</label>
                                    <input type='text' class='form-control' placeholder='Doe'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Email Address</label>
                                <div class='input-group'>
                                    <span class='input-group-text'>@</span>
                                    <input type='email' class='form-control' placeholder='john.doe@example.com'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Subject</label>
                                <select class='form-select'>
                                    <option>General Inquiry</option>
                                    <option>Technical Support</option>
                                    <option>Sales Question</option>
                                    <option>Partnership Opportunity</option>
                                </select>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Message</label>
                                <textarea class='form-control' rows='5' placeholder='Your message here...'></textarea>
                            </div>

                            <div class='d-flex justify-content-between align-items-center mt-4'>
                                <div class='form-check'>
                                    <input class='form-check-input' type='checkbox' id='newsletter'>
                                    <label class='form-check-label' for='newsletter'>
                                        Subscribe to newsletter
                                    </label>
                                </div>
                                <button type='submit' class='btn btn-primary px-4'>Submit</button>
                            </div>
                        </form>
                    </div>
                </div>

                <div class='alert alert-info mt-4 d-flex align-items-center' role='alert'>
                    <svg class='bi flex-shrink-0 me-2' width='24' height='24'></svg>
                    <div>We typically respond within 24 hours during business days.</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapContact);
pdf.SaveAs("contact-form.pdf");
Imports IronPdf

Dim renderer = New ChromePdfRenderer()

' Configure for improve Bootstrap rendering
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500 ' Allow JS to execute
renderer.RenderingOptions.ViewPortWidth = 1200 ' Desktop viewport

Dim bootstrapContact As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_79___ rel='stylesheet'>
    <style>
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='row justify-content-center'>
            <div class='col-lg-8'>
                <div class='card shadow'>
                    <div class='card-header bg-primary text-white'>
                        <h2 class='mb-0'>Contact Us</h2>
                    </div>
                    <div class='card-body'>
                        <form>
                            <div class='row g-3'>
                                <div class='col-md-6'>
                                    <label class='form-label'>First Name</label>
                                    <input type='text' class='form-control' placeholder='John'>
                                </div>
                                <div class='col-md-6'>
                                    <label class='form-label'>Last Name</label>
                                    <input type='text' class='form-control' placeholder='Doe'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Email Address</label>
                                <div class='input-group'>
                                    <span class='input-group-text'>@</span>
                                    <input type='email' class='form-control' placeholder='john.doe@example.com'>
                                </div>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Subject</label>
                                <select class='form-select'>
                                    <option>General Inquiry</option>
                                    <option>Technical Support</option>
                                    <option>Sales Question</option>
                                    <option>Partnership Opportunity</option>
                                </select>
                            </div>

                            <div class='mt-3'>
                                <label class='form-label'>Message</label>
                                <textarea class='form-control' rows='5' placeholder='Your message here...'></textarea>
                            </div>

                            <div class='d-flex justify-content-between align-items-center mt-4'>
                                <div class='form-check'>
                                    <input class='form-check-input' type='checkbox' id='newsletter'>
                                    <label class='form-check-label' for='newsletter'>
                                        Subscribe to newsletter
                                    </label>
                                </div>
                                <button type='submit' class='btn btn-primary px-4'>Submit</button>
                            </div>
                        </form>
                    </div>
                </div>

                <div class='alert alert-info mt-4 d-flex align-items-center' role='alert'>
                    <svg class='bi flex-shrink-0 me-2' width='24' height='24'></svg>
                    <div>We typically respond within 24 hours during business days.</div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapContact)
pdf.SaveAs("contact-form.pdf")
$vbLabelText   $csharpLabel

Resultado: Um formulário de contato profissional com controles de formulário do Bootstrap, layout em grade, estilo de cartão e grupos de entrada — tudo renderizado com precisão em PDF.

Para mais exemplos, consulte renderização de gráficos e sites WebGL . O exemplo de adição de códigos de barras em HTML mostra elementos HTML adicionais. Para otimizar o desempenho, utilize recursos em PDF, um guia de desempenho e gerenciamento do tamanho do pacote .

O PDFShift é compatível com Bootstrap e CSS moderno?

  • API na nuvem: Todas as conversões são feitas por meio de chamadas de API HTTP para os servidores do PDFShift.
  • Suporte ao Bootstrap: Geralmente lida bem com layouts do Bootstrap 4/5.
  • Suporte a CSS3: Flexbox eficiente e renderização CSS moderna.
  • É necessário ter acesso à internet: não é possível gerar PDFs offline.
  • Preços por documento: Cobrança por conversão, não por licença de desenvolvedor

Principais considerações para o PDFShift:

  • Dependência externa: Toda a geração de PDFs requer disponibilidade de internet e API externa.
  • Privacidade de dados: conteúdo HTML enviado a servidores de terceiros para processamento.
  • Custos por volume: A precificação por documento pode se tornar cara em grande escala.
  • Latência: As viagens de ida e volta na rede adicionam atraso a cada conversão.
  • Sem capacidade offline: Não funciona em ambientes isolados da internet ou offline.

Impacto no desenvolvimento: Embora o PDFShift lide bem com o Bootstrap, a arquitetura em nuvem introduz algumas desvantagens operacionais:

  1. Custos contínuos por documento versus licença única por desenvolvedor do IronPDF
  2. Dependência de serviço externo versus processamento local no próprio ambiente.
  3. Considerações sobre o tratamento de dados sensíveis
  4. Requisito de conectividade com a internet versus capacidade offline

Impacto no desenvolvimento : A arquitetura em nuvem introduz considerações operacionais:

  1. Custos contínuos por documento versus licenciamento único
  2. Dependência externa versus controle de processamento local
  3. Requisitos de tratamento de dados para conteúdo sensível
  4. Pré-requisitos de conectividade com a Internet

Para aplicações de alto volume ou dados sensíveis, o processamento local do IronPDF oferece melhor controle e custo-benefício. Considere a geração paralela e o uso de múltiplas threads para melhorar o desempenho. O exemplo com múltiplas threads demonstra o processamento concorrente. Para alternativas em nuvem, consulte Implantação no Azure e integração com o AWS Lambda .

Consulte o Guia de CSS do Bootstrap e Flexbox e as configurações de renderização HTML . Para suporte a CSS moderno, consulte idiomas internacionais, CMYK e visibilidade de metadados .

Quais são as opções de licenciamento?

O IronPDF oferece uma licença de desenvolvedor gratuita . O pacote básico começa em $799, sem custos ocultos. O pacote inclui SaaS e redistribuição OEM . Todas as licenças incluem garantia de reembolso de 30 dias, um ano de suporte e atualizações, e são válidas para desenvolvimento, teste, homologação e produção, com licença perpétua. Consulte a tabela de preços e licenciamento do IronPDF . Para gerenciamento de licenças, consulte Aplicação de chaves de licença e Configuração de chaves de licença . O guia de chaves de licença abrange todos os métodos de configuração. Para solucionar problemas de licenciamento, consulte "Não foi possível conectar ao servidor de licenciamento" e "Usando declarações" .

A página de licenciamento do IronPDF exibe três planos: Lite (US$ 499), Professional (US$ 999) e Unlimited (US$ 2.999), com limites de desenvolvedores e projetos para cada plano.

O PDFShift oferece cinco pacotes disponíveis mensalmente ou anualmente, utilizando créditos:

  1. Gratuito : 50 créditos mensais
  2. Plano inicial : 500 créditos mensais (US$ 9) ou 6.000 créditos anuais (US$ 99)
  3. Boost : 2.500 créditos mensais (US$ 24) ou 30.000 créditos anuais (US$ 240)
  4. Crescimento : 5.000 créditos mensais (US$ 39) ou 60.000 créditos anuais (US$ 390)
  5. Empresarial : 25.000 créditos mensais (US$ 99)

Limites de tamanho de arquivo: 1 MB (gratuito), 5 MB (pacotes pagos).

Comparação de preços do PDFShift mostrando três planos anuais: Startup (US$ 90), Boost (US$ 240) e Growth (US$ 390), com diferentes limites de crédito mensal e taxas de excedente.

Visite a página de preços do PDFShift .

Qual API de PDF devo escolher?

O IronPDF é gratuito para desenvolvedores independentes e oferece amplos recursos de modificação e conversão de PDFs. O IronPDF oferece ferramentas superiores de edição e formatação. A biblioteca converte HTML em PDFs vetoriais para impressão comercial, com resultados nítidos e de alta qualidade. Consulte as informações sobre licenciamento do Iron Software . Para obter recursos adicionais, explore as opções de organização de PDFs , assinatura e proteção de PDFs e conversão de PDFs . A lista completa de funcionalidades abrange todas as capacidades. Para recursos empresariais, consulte exemplos de assinaturas digitais e criptografia e descriptografia .

O PDFShift é uma API de conversão de HTML para PDF baseada na nuvem, com endpoints simples e suporte para vários idiomas. O PDFShift lida com conversões paralelas por meio de solicitações ao servidor. No entanto, o serviço carece de funcionalidades avançadas como criação de formulários em PDF , fusão de PDFs , substituição de texto ou edição de metadados . Para comparação do tratamento de formulários, veja o exemplo de dados do formulário e o preenchimento e edição de formulários . Para organização de documentos, veja o exemplo de mesclagem de PDFs e divisão de páginas de PDF .

As licenças do IronPDF são baseadas em desenvolvedores e são adquiridas em uma única parcela. O PDFShift utiliza um sistema de licenciamento mensal ou anual baseado em créditos, exigindo assinaturas contínuas. O IronPDF oferece suporte à distribuição OEM e SaaS; O PDFShift não. Para gerenciamento de licenças, consulte IronPDF e opções de atualização do IronPDF. O registro de alterações acompanha todas as atualizações do produto. Para opções de suporte, consulte o guia de solicitação de suporte de engenharia e as melhores práticas de suporte .

Comparando as duas ferramentas: o IronPDF oferece muito mais recursos. O PDFShift oferece recursos limitados de manipulação de PDFs. O IronPDF converte URLs em PDF em três linhas, enquanto o PDFShift exige uma complexidade de código adicional. O IronPDF integra-se de forma rápida e fácil em projetos .NET . O sistema em nuvem do PDFShift depende de APIs externas, o que aumenta a complexidade da integração. Para obter recursos de resolução de problemas, consulte o guia rápido de resolução de problemas e o suporte de engenharia . Recursos adicionais incluem arquivos de log do Azure e arquivos de log da AWS . Para obter orientações sobre a implementação, consulte a seção de solução de problemas e depuração de implementação do Azure Functions .

A Iron Software oferece cinco ferramentas pelo preço de duas. O Iron Suite inclui:

  • IronBarcode - Geração e leitura de códigos de barras IronXL - Manipulação de arquivos Excel sem o Office IronOCR - OCR avançado para extração de texto IronPDF - Biblioteca completa para manipulação de PDFs
  • IronWebScraper - Extração de dados e web scraping

Visite a página do Iron Suite para explorar o IRONSUITE. Para obter informações adicionais sobre os produtos da Iron Software , consulte a documentação do IronSecureDoc para suas necessidades de segurança de documentos. As demonstrações do produto mostram aplicações no mundo real. Para uma análise comparativa, consulte a comparação entre QuestPDF e IronPDF . A página de marcos importantes destaca as principais conquistas desde 2015.

ObservePDFShift é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo PDFShift. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

Como posso converter HTML para PDF em C#?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs. Você também pode converter arquivos HTML em PDFs usando o RenderHtmlFileAsPdf .

Quais são os benefícios de usar o IronPDF para manipulação de PDFs?

O IronPDF oferece um conjunto robusto de recursos para manipulação de PDFs, incluindo a criação de PDFs a partir de vários formatos, extração de imagens, criptografia, recursos de edição e compatibilidade com múltiplas plataformas, como Windows, Linux e serviços em nuvem como Azure e AWS.

Quais são as principais funcionalidades do PDFShift?

O PDFShift é uma API baseada na nuvem que oferece suporte a conversões rápidas de HTML para PDF com recursos como conversões paralelas, cabeçalhos personalizados, solicitações assíncronas e compatibilidade com várias linguagens de programação.

Quais são as diferenças entre o IronPDF e o PDFShift em termos de licenciamento?

O IronPDF oferece um licenciamento baseado em desenvolvedores, com compra única e garantia de reembolso de 30 dias. Em contrapartida, o PDFShift utiliza um sistema de licenciamento baseado em créditos, com planos mensais e anuais.

O IronPDF pode ser usado em ambientes de nuvem?

Sim, o IronPDF é compatível com ambientes de nuvem como Microsoft Azure e AWS, o que o torna versátil para diferentes cenários de implantação.

Como adicionar cabeçalhos e rodapés a um PDF usando o IronPDF?

O IronPDF permite adicionar cabeçalhos e rodapés a PDFs usando seus métodos integrados, que podem ser personalizados para incluir texto, imagens ou números de página.

Quais plataformas o IronPDF suporta?

O IronPDF é compatível com quase todos os sistemas operacionais e frameworks compatíveis com C#, incluindo Windows, Linux e .NET Core, e também pode ser usado em ambientes de nuvem.

Como posso instalar o IronPDF no meu projeto do Visual Studio?

O IronPDF pode ser instalado usando o Gerenciador de Pacotes NuGet do Visual Studio, a Linha de Comando do Visual Studio ou baixando-o diretamente das páginas da web do NuGet ou do IronPDF.

É possível extrair imagens de PDFs usando o IronPDF?

Sim, o IronPDF oferece recursos para extrair imagens de PDFs, permitindo que os desenvolvedores manipulem e reutilizem imagens fora do documento original.

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

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim