using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
ZetPDF (zetpdf.com) é um SDK PDF .NET licenciado comercialmente cuja superfície de API se assemelha muito ao PDFsharp — a ponto de a comunidade PDFsharp ter questionado se é um fork fechado. O fornecedor o comercializa como um mecanismo de código gerenciado proprietário, 100%. ZetPDF não é distribuído via NuGet — a instalação é um download de ZIP de https://zetpdf.com/download/ — e o projeto não mostra atividade de lançamento público desde 2021. Os preços são perpétuos: $299 Projeto Único / $449 Multi / $599 OEM.
Este guia fornece um caminho de migração do ZetPDF para o IronPDF, com instruções passo a passo, comparações de código e exemplos para desenvolvedores .NET avaliando esta transição.
Por que migrar do ZetPDF?
A API de desenho em coordenadas, moldada pelo PDFsharp do ZetPDF, apresenta restrições arquitetônicas que limitam os fluxos de trabalho modernos de geração de documentos. Razões comuns pelas quais as equipes consideram a migração:
Coordenadas Baseadas em API: ZetPDF posiciona cada elemento via coordenadas exatas XGraphics. O posicionamento manual cria sobrecarga de manutenção à medida que os requisitos mudam.
Sem Suporte a CSS: Sem sistema de estilo — fontes e cores são geridas por elemento no código.
Sem renderização de JavaScript : Não é possível renderizar conteúdo web dinâmico nem executar JavaScript durante a geração do PDF.
Sem HTML nativo para PDF: A lista de recursos documentada pelo ZetPDF não inclui um conversor de HTML para PDF ou URL para PDF; a renderização é apenas um desenho de baixo nível XGraphics.
Sem NuGet, Lançamentos Inativos: A distribuição é um ZIP do fornecedor em https://zetpdf.com/download/, sem atividade de lançamento público desde 2021.
Quebras de Página Manuais: O estouro de página deve ser calculado e gerenciado manualmente em vez de por meio de paginação automática.
Medida de Texto Necessária: O cálculo manual para a quebra de texto adiciona sobrecarga de desenvolvimento.
O problema fundamental
ZetPDF e PDFsharp forçam você a posicionar cada elemento com coordenadas exatas:
// ZetPDF: Manual positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
// ZetPDF: Manual positioning nightmare
graphics.DrawString("Name:", font, brush, new XPoint(50, 100));
graphics.DrawString("John Doe", font, brush, new XPoint(100, 100));
graphics.DrawString("Address:", font, brush, new XPoint(50, 120));
graphics.DrawString("123 Main St", font, brush, new XPoint(100, 120));
// ... hundreds of lines for a simple form
' ZetPDF: Manual positioning nightmare
graphics.DrawString("Name:", font, brush, New XPoint(50, 100))
graphics.DrawString("John Doe", font, brush, New XPoint(100, 100))
graphics.DrawString("Address:", font, brush, New XPoint(50, 120))
graphics.DrawString("123 Main St", font, brush, New XPoint(100, 120))
' ... hundreds of lines for a simple form
$vbLabelText $csharpLabel
O IronPDF usa HTML/CSS — o mecanismo de layout cuida de tudo:
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Simple HTML
var html = @"
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Simple HTML
Dim html As String = "
<p><strong>Name:</strong> John Doe</p>
<p><strong>Address:</strong> 123 Main St</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText $csharpLabel
IronPDF vs ZetPDF: 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:
Recurso
ZetPDF
IronPDF
Estilo da API
Desenho moldado por PDFsharp XGraphics
Rendering de HTML de alto nível
Conversão de HTML para PDF
Não está na lista de recursos documentados
Sim (Chromium completo)
Licença Comercial
Sim, Perpétuo ($299 / $449 / $599)
Sim
Distribuição
Download de ZIP (sem pacote NuGet)
NuGet (IronPdf)
Última Atividade Pública
Nenhum lançamento listado desde 2021
Ativo, lançamentos frequentes
Suporte a CSS
Não
CSS3 completo
JavaScript
Não
ES2024 completo
Layout automático
Não
Sim
Quebras de página automáticas
Não
Sim
Tabelas
Desenho manual
HTML
Cabeçalhos/Rodapés
Manual
HTML/CSS
Marcas d'água
Código manual
Embutido
Mesclar PDFs
Nenhum helper de primeira classe
Sim
Dividir PDFs
Nenhum helper de primeira classe
Sim
Assinaturas digitais
Não
Sim
PDF/A
Não
Sim
Guia rápido: Migração do ZetPDF para o IronPDF
A migração pode começar imediatamente com esses passos fundamentais.
Etapa 1: Substituir a referência ZetPDF pelo pacote NuGet IronPDF
ZetPDF não está no NuGet — é enviado como um ZIP de https://zetpdf.com/download/ e é referenciado ao adicionar ZetPDF.dll ao seu projeto. Após a migração, você remove essa referência de DLL e instala o IronPDF do NuGet:
# Remove the ZetPDF.dll reference from your csproj manually, then:
dotnet add package IronPdf
# Remove the ZetPDF.dll reference from your csproj manually, then:
dotnet add package IronPdf
SHELL
Etapa 2: Atualizar Namespaces
Substituir namespaces ZetPDF pelo namespace IronPDF:
// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;
// After (IronPDF)
using IronPdf;
// Before (ZetPDF)
using ZetPDF;
using ZetPDF.Drawing;
using ZetPDF.Fonts;
// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText $csharpLabel
Etapa 3: Inicializar a licença
Adicionar inicialização de licença na inicialização do aplicativo:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText $csharpLabel
Exemplos de migração de código
Converter HTML para PDF
A lista de recursos publicada do ZetPDF não inclui um conversor nativo de HTML para PDF ou URL para PDF — sua superfície documentada cobre visualização/impressão de PDF, anotações, criptografia AES256, campos de formulário e extração de texto. O pseudo-wrapper abaixo é ilustrativo de como as equipes geralmente definem uma entrada de HTML para PDF no ZetPDF; na prática, o trabalho recai para um renderizador HTML externo ou para um desenho de baixo nível XGraphics.
Abordagem ZetPDF (ilustrativa — sem HTML nativo para PDF):
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// No native HtmlToPdfConverter exists in ZetPDF — illustrative call only.
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// No native HtmlToPdfConverter exists in ZetPDF — illustrative call only.
var converter = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
converter.ConvertHtmlToPdf(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports ZetPDF
Imports System
Class Program
Shared Sub Main()
' No native HtmlToPdfConverter exists in ZetPDF — illustrative call only.
Dim converter = New HtmlToPdfConverter()
Dim htmlContent = "<html><body><h1>Hello World</h1></body></html>"
converter.ConvertHtmlToPdf(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
$vbLabelText $csharpLabel
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Module
$vbLabelText $csharpLabel
IronPDF fornece ChromePdfRenderer com RenderHtmlAsPdf(), que retorna um objeto PdfDocument — você pode salvar em arquivo, recuperar dados binários ou realizar operações adicionais antes de salvar.
ZetPDF também não tem conversor nativo de URL para PDF; A renderização de HTML/URL não faz parte da lista de recursos documentada. Caminhos de migração práticos normalmente emparelham ZetPDF com um renderizador HTML externo ou movem-se para uma biblioteca baseada em Chromium como IronPDF.
Abordagem ZetPDF (ilustrativa — sem URL nativo para PDF):
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// No native ConvertUrlToPdf exists in ZetPDF — illustrative call only.
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
class Program
{
static void Main()
{
// No native ConvertUrlToPdf exists in ZetPDF — illustrative call only.
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
converter.ConvertUrlToPdf(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports ZetPDF
Imports System
Class Program
Shared Sub Main()
' No native ConvertUrlToPdf exists in ZetPDF — illustrative call only.
Dim converter As New HtmlToPdfConverter()
Dim url As String = "https://www.example.com"
converter.ConvertUrlToPdf(url, "webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
$vbLabelText $csharpLabel
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
Dim url As String = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Module
$vbLabelText $csharpLabel
O RenderUrlAsPdf() da IronPDF em ChromePdfRenderer aproveita um mecanismo de renderização completo do Chromium para capturar páginas da web, incluindo a execução de JavaScript e CSS moderno.
ZetPDF não fornece um auxiliar de PdfMerger.MergeFiles() de uma linha. A mesclagem segue o mesmo padrão de PDFsharp (que ZetPDF se assemelha): abra cada entrada com PdfReader, depois repita páginas para uma saída PdfDocument e Save(). O wrapper ilustrativo abaixo espelha a superfície do IronPDF para comparação; no código real do ZetPDF você escreve o loop manual.
Abordagem ZetPDF (ilustrativa — não tem PdfMerger embutido):
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// ZetPDF has no built-in PdfMerger — illustrative call only.
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// ZetPDF is NOT on NuGet — install via SDK ZIP from https://zetpdf.com/download/
using ZetPDF;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// ZetPDF has no built-in PdfMerger — illustrative call only.
var merger = new PdfMerger();
var files = new List<string> { "document1.pdf", "document2.pdf" };
merger.MergeFiles(files, "merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports ZetPDF
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
' ZetPDF has no built-in PdfMerger — illustrative call only.
Dim merger As New PdfMerger()
Dim files As New List(Of String) From {"document1.pdf", "document2.pdf"}
merger.MergeFiles(files, "merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
$vbLabelText $csharpLabel
Abordagem IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim pdfs As New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
}
Dim merged As PdfDocument = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
$vbLabelText $csharpLabel
IronPDF carrega documentos como objetos PdfDocument usando PdfDocument.FromFile(), depois os mescla com o método estático PdfDocument.Merge(). A abordagem orientada a objetos permite operações adicionais no documento mesclado antes de salvá-lo.
Para desenvolvedores que já possuem código ZetPDF usando gráficos baseados em coordenadas, o processo de migração envolve a conversão dos comandos de desenho para HTML/CSS.
Abordagem ZetPDF baseada em coordenadas:
using ZetPDF;
using ZetPDF.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
using ZetPDF;
using ZetPDF.Drawing;
var document = new PdfDocument();
var page = document.AddPage();
page.Width = XUnit.FromMillimeter(210);
page.Height = XUnit.FromMillimeter(297);
var graphics = XGraphics.FromPdfPage(page);
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Arial", 12);
graphics.DrawString("Company Report", titleFont, XBrushes.Navy,
new XPoint(50, 50));
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black,
new XPoint(50, 80));
graphics.DrawString("Generated: " + DateTime.Now.ToString(), bodyFont, XBrushes.Gray,
new XPoint(50, 100));
document.Save("report.pdf");
Imports ZetPDF
Imports ZetPDF.Drawing
Dim document As New PdfDocument()
Dim page = document.AddPage()
page.Width = XUnit.FromMillimeter(210)
page.Height = XUnit.FromMillimeter(297)
Dim graphics = XGraphics.FromPdfPage(page)
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Arial", 12)
graphics.DrawString("Company Report", titleFont, XBrushes.Navy, New XPoint(50, 50))
graphics.DrawString("This is the introduction paragraph.", bodyFont, XBrushes.Black, New XPoint(50, 80))
graphics.DrawString("Generated: " & DateTime.Now.ToString(), bodyFont, XBrushes.Gray, New XPoint(50, 100))
document.Save("report.pdf")
$vbLabelText $csharpLabel
Abordagem HTML do IronPDF:
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var html = $@"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim html As String = $"
<html>
<head>
<style>
body {{font-family: Arial, sans-serif; padding: 50px;}}
h1 {{color: navy;}}
.date {{color: gray;}}
</style>
</head>
<body>
<h1>Company Report</h1>
<p>This is the introduction paragraph.</p>
<p class='date'>Generated: {DateTime.Now}</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
$vbLabelText $csharpLabel
A abordagem ZetPDF exige a criação de objetos de fonte, o cálculo das posições exatas dos pixels e o gerenciamento manual do contexto gráfico. A abordagem do IronPDF utiliza HTML e CSS padrão que os desenvolvedores web já conhecem — fontes, cores e layout são gerenciados por meio de propriedades CSS familiares.
Referência de mapeamento da API ZetPDF para IronPDF
Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:
ZetPDF
IronPDF
new PdfDocument()
new ChromePdfRenderer()
document.AddPage()
Automático
XGraphics.FromPdfPage(page)
N/A (HTML/CSS em vez disso)
graphics.DrawString()
Elementos de texto HTML
graphics.DrawImage()
tag
graphics.DrawLine()
Bordas CSS /
graphics.DrawRectangle()
CSS border + div
new XFont()
CSS font-family
XBrushes.Black
CSS color
document.Save()
pdf.SaveAs()
PdfReader.Open()
PdfDocument.FromFile()
(no native HTML-to-PDF)
ChromePdfRenderer.RenderHtmlAsPdf()
(no native URL-to-PDF)
ChromePdfRenderer.RenderUrlAsPdf()
(manual page-copy loop)
PdfDocument.Merge()
Problemas e soluções comuns em migrações
Problema 1: Layout baseado em coordenadas
ZetPDF: Tudo requer coordenadas X,Y exatas com posicionamento manual.
Solução: Utilize um layout de fluxo HTML/CSS. Para posicionamento absoluto quando necessário, use CSS:
Documento com código de desenho baseado em coordenadas que precisa ser convertido para HTML. Observe os padrões de uso de fontes e cores. Mapear estruturas de layout para seus equivalentes em HTML.
Tarefas de atualização de código
Remova a referência manual ZetPDF.dll do seu .csproj
Instale o pacote NuGet IronPDF (dotnet add package IronPdf)
Atualize as importações de namespace de ZetPDF para IronPdf
Substitua qualquer encapsulamento de HTML-para-PDF interno ao redor do ZetPDF por ChromePdfRenderer.RenderHtmlAsPdf()
Substitua qualquer encapsulamento de URL-para-PDF por ChromePdfRenderer.RenderUrlAsPdf()
Substitua laços de mesclagem manual de cópia de página por PdfDocument.Merge()
Converta chamadas DrawString() para elementos de texto HTML
Converta XFont para CSS font-family
Substitua XBrushes por cores CSS
Adicione a inicialização da licença do IronPDF na inicialização (IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";)
Testes pós-migração
Após a migração, verifique os seguintes aspectos:
Compare a saída visual para garantir que a aparência corresponda ou seja melhorada.
Verifique se as fontes são renderizadas conforme o esperado com o estilo CSS.
As quebras de página de teste ocorrem corretamente com a paginação automática.
Verifique se as imagens estão posicionadas e exibidas corretamente.
Testar se as operações de mesclagem de PDFs produzem resultados corretos
Confirme se todas as funcionalidades existentes funcionam com a nova implementação.
Principais benefícios da migração para o IronPDF
A migração do ZetPDF para o IronPDF oferece diversas vantagens cruciais:
Mecanismo de renderização Chromium moderno: O IronPDF usa o Chromium para conversão de HTML em PDF, garantindo suporte completo a CSS3 e JavaScript ES2024. Os frameworks modernos e os designs responsivos são exibidos corretamente.
Criação de conteúdo baseado em HTML: os desenvolvedores web podem aproveitar suas habilidades existentes em HTML e CSS. Não é necessário aprender APIs de desenho baseadas em coordenadas nem gerenciar objetos de fonte.
Layout e paginação automáticos: a quebra de texto, as quebras de página e o layout fluido acontecem automaticamente. Não é necessário calcular manualmente as posições dos elementos.
API simplificada: Chamadas de método único para operações comuns. PdfDocument.Merge() substitui padrões complexos de manipulação de caminhos de arquivos.
Desenvolvimento Ativo: O ritmo de lançamento regular do IronPDF mantém a biblioteca atualizada com as versões modernas do .NET, em contraste com a falta de atividade pública de lançamento do ZetPDF desde 2021.
Conjunto de Recursos Abrangente: Marcação de água embutida, assinaturas digitais, conformidade PDF/A e recursos avançados de manipulação de PDF que estão ausentes da superfície documentada do ZetPDF.
ObservePDFSharp e ZetPDF são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado pelo ZetPDF ou pela empira Software GmbH. 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 é 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 ...