IRONSOFTWAREHOME
VÍDEOS

Como dividir um PDF com várias páginas usando o IronPDF em C# | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

A Winnovative é um nome reconhecido na área de geração de PDFs em .NET , oferecendo recursos de conversão de HTML para PDF para aplicativos C#. No entanto, a biblioteca clássica de longa data depende de um mecanismo de renderização proprietário mais antigo, e seu suporte para CSS moderno (Grid, Flexbox recente) e JavaScript moderno (ES2017+) é inconsistente comparado a um navegador Chromium atual. A resposta do fornecedor tem sido enviar um produto de classe Chromium separado, Winnovative.Pdf.Next, em vez de atualizar o Classic no local — o que significa que os clientes existentes da Winnovative enfrentam uma migração de código de qualquer maneira.

Este guia fornece um caminho de migração do Winnovative para o IronPDF, com instruções passo a passo, comparações de código e exemplos práticos para desenvolvedores .NET avaliando essa transição.

Por que migrar da Winnovative?

A biblioteca Classic da Winnovative usa um motor proprietário mais antigo que não foi atualizado para os padrões web modernos:

Grid CSS / Flexbox moderno Inconsistente: Layouts que dependem do Grid CSS ou recursos recentes do Flexbox podem renderizar incorretamente comparado a um navegador Chromium atual.

Lacunas de Compatibilidade com JavaScript Moderno: Recursos ES2017+ (funções de flecha, async/await, classes) não são executados de forma confiável, o que afeta React, Vue e outras estruturas modernas.

Ritmo Lento: O motor clássico recebe atualizações de motor de renderização infrequentes; a resposta do fornecedor tem sido enviar o produto separado de classe Chromium Winnovative.Pdf.Next, deixando o Classic com recursos congelados.

Fardo de Migração de Dois Produtos: Mudar para Winnovative.Pdf.Next é em si uma reescrita — a API Next vive em um namespace diferente (Winnovative.Pdf.Next) e é binariamente incompatível com o Classic.

Casos Limite de Renderização de Fontes: Fontes web e tipografia personalizada às vezes são renderizados de forma diferente de um navegador moderno.

Impacto no mundo real

CSS e JavaScript modernos que podem renderizar de forma inconsistente no Winnovative Classic:

<!-- CSS Grid can render inconsistently inWinnovative Classic-->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</div>

<!-- Modern JavaScript may not execute reliably in Classic -->
<script>
const items = data.map(item => item.name);
const result = await fetchData();
class Report { }
</script>
HTML

##IronPDF vs Winnovative: Comparação de Recursos

Compreender as diferenças arquitetônicas ajuda os responsáveis ​​pelas decisões técnicas a avaliar o investimento em migração:

AspectoWinnovative ClassicIronPDF
Motor de renderizaçãoMotor proprietário mais antigoCromo (Atual)
Grade CSSInconsistenteSuporte completo
FlexboxInconsistente em casos extremosSuporte completo
JavaScriptJS moderno limitadoES2024
Bootstrap 5Problemas de layoutSuporte completo
Tailwind CSSLimitadoSuporte completo
React/Vue SSRProblemáticoFunciona
Fontes da WebNão confiável em algumas configuraçõesSuporte completo
AtualizaçõesPouco frequenteMensal
Preços (por desenvolvedor)$450 Implantação / $1,200 RedistribuívelSee ironpdf.com/pricing

Guia rápido: Migração do Winnovative para o IronPDF

A migração pode começar imediatamente com esses passos fundamentais.

Passo 1: Substituir pacotes NuGet

Remover todos os pacotes Winnovative (verifique quais seu projeto realmente usa):

# Remove Winnovative (Classic + related utilities)
dotnet remove package Winnovative.HtmlToPdf
# Also remove any of these your project references:
# dotnet remove package Winnovative.PdfMerge
# dotnet remove package Winnovative.PdfSecurity
# dotnet remove package Winnovative.Pdf.Next.Core
# dotnet remove package Winnovative.Client
SHELL

Instale o IronPDF:

# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar Namespaces

Substitua os namespaces Winnovative pelo namespace IronPDF:

// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;

// After (IronPDF)
using IronPdf;

Etapa 3: Inicializar a licença

Adicionar inicialização de licença na inicialização do aplicativo:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Exemplos de migração de código

Converter HTML para PDF

O caso de uso mais comum demonstra as diferenças de API entre essas bibliotecas PDF for .NET .

Abordagem inovadora da Winnovative:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        
        Console.WriteLine("PDF created successfully");
    }
}
C#

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully");
    }
}

Winnovative requer criar um HtmlToPdfConverter, definir uma chave de licença na instância, chamar ConvertHtml() com um parâmetro de URL base vazio, receber bytes brutos e gravá-los manualmente em um arquivo.IronPDF simplifica isso: crie um ChromePdfRenderer, chame RenderHtmlAsPdf() e use o método embutido SaveAs().

Para cenários avançados de conversão de HTML para PDF, consulte o guia de conversão de HTML para PDF .

Converter URLs em PDF

A conversão de URL para PDF apresenta padrões semelhantes.

Abordagem inovadora da Winnovative:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);
        
        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
        
        Console.WriteLine("PDF from URL created successfully");
    }
}
C#

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        
        // Save to file
        pdf.SaveAs("webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully");
    }
}

Winnovative usa ConvertUrl() retornando bytes que devem ser salvos manualmente.IronPDF fornece RenderUrlAsPdf() com um objeto PdfDocument que inclui SaveAs() para conveniência.

Consulte a documentação sobre URLs para PDF para obter informações sobre autenticação e opções de cabeçalho personalizadas.

Adicionando cabeçalhos e rodapés

Os cabeçalhos e rodapés revelam diferenças arquitetônicas significativas. Winnovative usa uma abordagem de elementos programáticos baseada em objetos TextElement, enquanto IronPDF usa cabeçalhos baseados em HTML com tokens de espaço reservado.

Abordagem inovadora da Winnovative:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Enable header
        htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
        htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;
        
        // Add header text
        TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
        htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);
        
        // Enable footer
        htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
        htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;
        
        // Add footer with page number
        TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
        htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("document.pdf", pdfBytes);
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}
C#

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 12
        };
        
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("document.pdf");
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}

Winnovative requer a habilitação de cabeçalhos/rodapés através de PdfDocumentOptions.ShowHeader, definição de alturas, criação de objetos TextElement com posições de coordenadas e objetos System.Drawing.Font, e uso de espaços reservados &p; e &P;.IronPDF usa objetos TextHeaderFooter com propriedades simples como CenterText e FontSize e espaços reservados intuitivos como {page} e {total-pages}.

Para cabeçalhos baseados em HTML com estilo CSS completo, consulte a documentação de cabeçalhos e rodapés .

Referência de mapeamento da API Winnovative para o IronPDF

Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:

Classe inovadora WinEquivalente ao IronPDF
HtmlToPdfConverterChromePdfRenderer
PdfDocumentPdfDocument
PdfDocumentOptionsRenderingOptions
PdfHeaderOptionsHtmlHeaderFooter
PdfFooterOptionsHtmlHeaderFooter
TextElementHTML em HtmlFragment
ImageElementHTML <img>

Mapeamento de Métodos

Método WinnovativeMétodo IronPDF
ConvertUrl(url)RenderUrlAsPdf(url)
ConvertUrlToFile(url, path)RenderUrlAsPdf(url).SaveAs(path)
ConvertHtml(html, baseUrl)RenderHtmlAsPdf(html)
ConvertHtmlToFile(html, path)RenderHtmlAsPdf(html).SaveAs(path)
ConvertHtmlFile(path)RenderHtmlFileAsPdf(path)
MergePdf(streams)PdfDocument.Merge(pdfs)
AppendPdf(pdf)pdf1.AppendPdf(pdf2)

Mapeamento de opções

Opção inovadora WinOpção IronPDF
PdfPageSize.A4PaperSize = PdfPaperSize.A4
PdfPageSize.LetterPaperSize = PdfPaperSize.Letter
PdfPageOrientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
PdfPageOrientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
TopMargin = 20MarginTop = 20
BottomMargin = 20MarginBottom = 20
LeftMargin = 15MarginLeft = 15
RightMargin = 15MarginRight = 15
ShowHeader = trueDefinir propriedade HtmlHeader
ShowFooter = trueDefinir propriedade HtmlFooter
JavaScriptEnabled = trueEnableJavaScript = true
Número de página &p;Número de página {page}
Total de páginas &P;Total de páginas {total-pages}

Problemas e soluções comuns em migrações

Problema 1: Os layouts CSS têm aparência diferente

Sintoma: Layouts que pareciam "normais" no Winnovative agora parecem diferentes no IronPDF.

Causa: O motor proprietário mais antigo doWinnovative Classictem peculiaridades de renderização que os desenvolvedores contornaram. O motor Chromium atual do IronPDF renderiza essas corretamente.

Solução: Remova as alterações de CSS específicas da Winnovative e use CSS padrão:

// Clean up legacy CSS
string cleanedHtml = html
    .Replace("-webkit-flex", "flex")
    .Replace("display: -webkit-box", "display: flex");

Problema 2: JavaScript não está sendo executado

Sintoma: Conteúdo dinâmico não aparece no PDF.

Causa: É necessário configurar explicitamente as opções de espera do JavaScript .

Solução:

renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);

Problema 3: URL base não funciona

Sintoma: URLs relativas para imagens e CSS não estão sendo resolvidas.

Causa: O IronPDF requer configuração explícita da URL base.

Solução:

renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");

Edição 4: Quebras de página diferentes

Sintoma: Conteúdo apresentando problemas em pontos diferentes dos da Winnovative.

Causa: Diferentes mecanismos de renderização lidam com quebras de página de maneiras diferentes.

Solução: Utilize controles de quebra de página CSS explícitos:

/* Control page breaks explicitly */
.no-break {
    page-break-inside: avoid;
}
.page-break-before {
    page-break-before: always;
}
.page-break-after {
    page-break-after: always;
}
Text

Problema 5: As fontes parecem diferentes

Sintoma: O texto aparece com fontes diferentes das esperadas.

Causa: O IronPDF utiliza fontes do sistema; As fontes da web precisam ser carregadas explicitamente.

Solução:

<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

body {
    font-family: 'Roboto', Arial, sans-serif;
}
</style>
HTML

Lista de verificação de migração inovadora da Winnovative

Tarefas pré-migração

Faça uma auditoria em sua base de código para identificar todos os usos do Winnovative:

# Find all Winnovative references
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
SHELL

Documente as configurações atuais, incluindo tamanhos de página, margens e configurações de cabeçalho/rodapé. Identificar soluções alternativas de CSS (prefixos do Webkit, grids baseados em floats) que podem ser removidas. Observe os requisitos de compatibilidade com JavaScript .

Tarefas de atualização de código

  1. Remova os pacotes NuGet da Winnovative.
  2. Instale o pacote NuGet do IronPDF
  3. Atualize todas as importações de namespace de Winnovative para IronPdf
  4. Substitua HtmlToPdfConverter por ChromePdfRenderer
  5. Converta chamadas ConvertHtml() para RenderHtmlAsPdf()
  6. Converta chamadas ConvertUrl() para RenderUrlAsPdf()
  7. Atualize as configurações de tamanho/orientação da página para RenderingOptions
  8. Converter configurações de margem
  9. Migre cabeçalhos/rodapés baseados em TextElement para TextHeaderFooter baseados em HTML
  10. Atualize espaços reservados de número de página de &P; para {total-pages}
  11. Adicionar inicialização da licença do IronPDF na inicialização do sistema.

Testes pós-migração

Após a migração, verifique os seguintes aspectos:

  • Teste básico de conversão de HTML para PDF
  • Teste de conversão de URL para PDF
  • Verificar que layouts CSS Grid renderizam corretamente
  • Verificar que layouts Flexbox renderizam corretamente
  • Teste páginas com uso intensivo de JavaScript usando a sintaxe moderna ES6+.
  • Verificar compatibilidade com Bootstrap 5
  • Testar a renderização do cabeçalho/rodapé
  • Verificar quebras de página
  • Comparar a qualidade de saída do PDF

Tarefas de limpeza

  • Remover soluções alternativas de CSS da Winnovative (prefixos webkit)
  • Atualizar o JavaScript ES5 para a sintaxe moderna
  • Remover alternativas de grade baseadas em ponto flutuante
  • Atualizar documentação

Principais benefícios da migração para o IronPDF

A migração do Winnovative para o IronPDF oferece diversas vantagens cruciais:

Mecanismo de renderização moderno: O IronPDF utiliza o mecanismo Chromium atual, garantindo suporte completo a CSS3, CSS Grid, Flexbox e JavaScript ES2024. Frameworks modernos como Bootstrap 5, Tailwind CSS e React/Vue são renderizados corretamente.

API Simplificada: Cabeçalhos e rodapés baseados em HTML substituem o posicionamento programático TextElement. Espaços reservados intuitivos como {page} substituem a sintaxe obscura &p;. Métodos embutidos SaveAs() eliminam o manuseio manual de bytes.

Desenvolvimento Ativo: As atualizações mensais do IronPDF garantem compatibilidade com as versões atuais e futuras do .NET.

CSS moderno sem gambiarras: CSS Grid, Flexbox e tipografia moderna funcionam sem prefixos do WebKit ou alternativas baseadas em float.

JavaScript moderno: os recursos do ES6+, incluindo funções de seta, async/await, classes e módulos, são executados corretamente.

Observe: Winnovative é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela Winnovative Software. 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.
Curtis Chau
Redator Técnico

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

...
Leia mais

Artigos relacionados

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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