Converter SVG para PDF em C# com IronPDF
O IronPDF converte gráficos SVG em documentos PDF usando a abordagem HTML para PDF — incorpore seu SVG em uma tag img com estilos de largura/altura explícitos para garantir a renderização correta. Use esta solução para converter PDF com gráficos vetoriais de forma eficiente em C#.
O IronPDF suporta a renderização de gráficos SVG em documentos PDF através do método HTML para PDF. Os arquivos SVG (Scalable Vector Graphics) são amplamente utilizados para logotipos, ícones, ilustrações e gráficos devido à sua escalabilidade e renderização nítida em qualquer tamanho. Converter SVGs para PDF é essencial para criar documentos prontos para impressão, para fins de arquivamento e para garantir uma exibição consistente em diferentes plataformas.
Nota: Defina o atributo de estilo de largura e/ou altura do elemento img ao incorporar um SVG; caso contrário, ele poderá ser reduzido a tamanho zero e não aparecer no PDF renderizado.
Início Rápido: Converter SVG para PDF com Facilidade
Converter arquivos SVG para PDF usando IronPDF em C#. Este trecho demonstra como incorporar um SVG por meio de uma tag HTML img com dimensões especificadas, uma etapa crucial para uma renderização bem-sucedida. Siga este guia para uma implementação rápida que garante que seus arquivos SVG sejam renderizados com precisão e salvos como PDFs.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
new IronPdf.ChromePdfRenderer { RenderingOptions = { WaitFor = IronPdf.Rendering.WaitFor.RenderDelay(1000) } } .RenderHtmlAsPdf("<img src='https://example.com/logo.svg' style='width:100px;height:100px;'>") .SaveAs("svgToPdf.pdf"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instale a biblioteca IronPDF para conversão de SVG para PDF.
- Use a tag `img` em HTML para importar uma imagem SVG.
- Utilize diferentes métodos de renderização no IronPDF para gerar PDFs.
- Salve o arquivo PDF contendo a imagem SVG usando o método `SaveAs`
- Verifique o PDF no local especificado.
Como faço para renderizar um arquivo SVG em PDF com o tamanho correto?
Muitos navegadores toleram SVGs sem especificações de tamanho; No entanto, nosso mecanismo de renderização exige eles. O mecanismo de renderização do Chrome usado pelo IronPDF requer dimensões explícitas para renderizar corretamente os elementos SVG. Sem dimensões especificadas, o SVG pode não aparecer no PDF final ou pode ser renderizado com dimensões inesperadas.
Ao trabalhar com SVGs no IronPDF, você tem várias opções para garantir a renderização correta:
- SVG embutido com atributos de estilo : Adicione largura e altura diretamente no atributo de estilo.
- Arquivos SVG externos : faça referência a arquivos SVG por meio de URL ou caminho de arquivo local.
- SVGs codificados em Base64 : Incorpore SVGs diretamente no HTML como strings Base64.
Para opções de renderização HTML mais avançadas, consulte nosso guia completo sobre opções de renderização .
:path=/static-assets/pdf/content-code-examples/how-to/SVGs-render.cs
using IronPdf;
string html = "<img src='https://ironsoftware.com/img/svgs/new-banner-svg.svg' style='width:100px'>";
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(1000);
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("svgToPdf.pdf");
Imports IronPdf
Private html As String = "<img src='https://ironsoftware.com/img/svgs/new-banner-svg.svg' style='width:100px'>"
Private renderer As New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.RenderDelay(1000)
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("svgToPdf.pdf")
Qual é a aparência do PDF gerado?
Adicionalmente, ou alternativamente, um nó SVG pode ter atributos de largura e altura explicitamente atribuídos. Veja também exemplos de estilização SVG no CodePen .
Exemplo de renderização de SVG para PDF
Trabalhando com arquivos SVG locais
Ao converter arquivos SVG locais para PDF, utilize o método do caminho do arquivo. Este método funciona bem com recursos SVG armazenados em seu projeto:
using IronPdf;
using System.IO;
// Load SVG file content
string svgPath = @"C:\assets\company-logo.svg";
string svgContent = File.ReadAllText(svgPath);
// Create HTML with embedded SVG
string html = $@"
<html>
<head>
<style>
body {{ margin: 20px; }}
.logo {{ width: 200px; height: 100px; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<img src='file:///{svgPath}' class='logo' />
<p>Annual financial summary with vector graphics.</p>
</body>
</html>";
// Configure renderer with custom settings
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Generate PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report-with-svg.pdf");
using IronPdf;
using System.IO;
// Load SVG file content
string svgPath = @"C:\assets\company-logo.svg";
string svgContent = File.ReadAllText(svgPath);
// Create HTML with embedded SVG
string html = $@"
<html>
<head>
<style>
body {{ margin: 20px; }}
.logo {{ width: 200px; height: 100px; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<img src='file:///{svgPath}' class='logo' />
<p>Annual financial summary with vector graphics.</p>
</body>
</html>";
// Configure renderer with custom settings
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Generate PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report-with-svg.pdf");
Imports IronPdf
Imports System.IO
' Load SVG file content
Dim svgPath As String = "C:\assets\company-logo.svg"
Dim svgContent As String = File.ReadAllText(svgPath)
' Create HTML with embedded SVG
Dim html As String = $"
<html>
<head>
<style>
body {{ margin: 20px; }}
.logo {{ width: 200px; height: 100px; }}
</style>
</head>
<body>
<h1>Company Report</h1>
<img src='file:///{svgPath}' class='logo' />
<p>Annual financial summary with vector graphics.</p>
</body>
</html>"
' Configure renderer with custom settings
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Generate PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report-with-svg.pdf")
Codificação Base64 para SVGs incorporados
Para cenários que exigem dados SVG incorporados diretamente em HTML sem referências a arquivos externos, a codificação Base64 oferece uma solução confiável. Essa abordagem é explicada detalhadamente em nosso guia de incorporação de imagens :
using IronPdf;
using System;
// SVG content as string
string svgContent = @"<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
<circle cx='50' cy='50' r='40' stroke='black' stroke-width='2' fill='red' />
</svg>";
// Convert to Base64
byte[] svgBytes = System.Text.Encoding.UTF8.GetBytes(svgContent);
string base64Svg = Convert.ToBase64String(svgBytes);
// Create HTML with Base64 embedded SVG
string html = $@"
<html>
<body>
<h2>Embedded SVG Example</h2>
<img src='data:image/svg+xml;base64,{base64Svg}' style='width:150px;height:150px;' />
</body>
</html>";
// Render to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("embedded-svg.pdf");
using IronPdf;
using System;
// SVG content as string
string svgContent = @"<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
<circle cx='50' cy='50' r='40' stroke='black' stroke-width='2' fill='red' />
</svg>";
// Convert to Base64
byte[] svgBytes = System.Text.Encoding.UTF8.GetBytes(svgContent);
string base64Svg = Convert.ToBase64String(svgBytes);
// Create HTML with Base64 embedded SVG
string html = $@"
<html>
<body>
<h2>Embedded SVG Example</h2>
<img src='data:image/svg+xml;base64,{base64Svg}' style='width:150px;height:150px;' />
</body>
</html>";
// Render to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("embedded-svg.pdf");
Imports IronPdf
Imports System
Imports System.Text
' SVG content as string
Dim svgContent As String = "<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100'>
<circle cx='50' cy='50' r='40' stroke='black' stroke-width='2' fill='red' />
</svg>"
' Convert to Base64
Dim svgBytes As Byte() = Encoding.UTF8.GetBytes(svgContent)
Dim base64Svg As String = Convert.ToBase64String(svgBytes)
' Create HTML with Base64 embedded SVG
Dim html As String = $"
<html>
<body>
<h2>Embedded SVG Example</h2>
<img src='data:image/svg+xml;base64,{base64Svg}' style='width:150px;height:150px;' />
</body>
</html>"
' Render to PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("embedded-svg.pdf")
Melhores práticas para conversão de SVG para PDF
1. Sempre especifique as dimensões.
O problema mais comum na conversão de SVGs para PDF é a ausência ou o fato de as dimensões serem nulas. Certifique-se sempre de que seus elementos SVG tenham valores de largura e altura explícitos. Para designs responsivos, considere usar as configurações de viewport para controlar o layout do PDF.
2. Lidar com SVGs complexos com atrasos de renderização
Arquivos SVG complexos com animações ou JavaScript podem exigir tempo de renderização adicional. Use a opção RenderDelay para garantir a renderização completa:
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
Para técnicas avançadas de manipulação de JavaScript, consulte nosso guia de renderização de JavaScript .
3. Otimizar arquivos SVG
Antes da conversão, otimize seus arquivos SVG da seguinte forma:
- Remover metadados desnecessários
- Simplificando caminhos
- Converter texto em caminhos para renderização consistente
- Utilizando compressão adequada
4. Teste a compatibilidade entre plataformas
A renderização de SVG pode variar dependendo do sistema operacional. Teste suas conversões em:
Solução de problemas comuns com SVG
O arquivo SVG não aparece no PDF.
Se o seu arquivo SVG não aparecer no PDF gerado:
- Verifique se as dimensões estão configuradas corretamente.
- Verifique se os caminhos dos arquivos ou URLs estão acessíveis.
- Certifique-se de que o tipo MIME esteja correto para os arquivos SVG.
- Consulte nosso guia de renderização com perfeição de pixels.
Problemas de escala e resolução
Para renderização SVG de alta qualidade em diferentes escalas:
// Set custom DPI for better quality
renderer.RenderingOptions.DPI = 300;
// Use CSS transforms for scaling
string html = @"
<img src='logo.svg' style='width:200px;height:200px;transform:scale(1.5);' />";
// Set custom DPI for better quality
renderer.RenderingOptions.DPI = 300;
// Use CSS transforms for scaling
string html = @"
<img src='logo.svg' style='width:200px;height:200px;transform:scale(1.5);' />";
' Set custom DPI for better quality
renderer.RenderingOptions.DPI = 300
' Use CSS transforms for scaling
Dim html As String = "
<img src='logo.svg' style='width:200px;height:200px;transform:scale(1.5);' />"
Renderização de fontes em SVGs
Quando os arquivos SVG contiverem elementos de texto, certifique-se de que as fontes estejam incorporadas corretamente. Saiba mais sobre gerenciamento de fontes e suporte a fontes da web .
Técnicas avançadas de conversão de SVG
Processamento em lote de múltiplos SVGs
Para converter vários arquivos SVG em um único documento PDF:
using IronPdf;
using System.Collections.Generic;
using System.Text;
List<string> svgFiles = new List<string>
{
"chart1.svg",
"chart2.svg",
"diagram.svg"
};
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.Append("<html><body>");
foreach(string svgFile in svgFiles)
{
htmlBuilder.Append($@"
<div style='page-break-after:always;'>
<img src='{svgFile}' style='width:600px;height:400px;' />
</div>");
}
htmlBuilder.Append("</body></html>");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("multiple-svgs.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Text;
List<string> svgFiles = new List<string>
{
"chart1.svg",
"chart2.svg",
"diagram.svg"
};
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.Append("<html><body>");
foreach(string svgFile in svgFiles)
{
htmlBuilder.Append($@"
<div style='page-break-after:always;'>
<img src='{svgFile}' style='width:600px;height:400px;' />
</div>");
}
htmlBuilder.Append("</body></html>");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("multiple-svgs.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Text
Dim svgFiles As New List(Of String) From {
"chart1.svg",
"chart2.svg",
"diagram.svg"
}
Dim htmlBuilder As New StringBuilder()
htmlBuilder.Append("<html><body>")
For Each svgFile As String In svgFiles
htmlBuilder.Append($"
<div style='page-break-after:always;'>
<img src='{svgFile}' style='width:600px;height:400px;' />
</div>")
Next
htmlBuilder.Append("</body></html>")
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdf.SaveAs("multiple-svgs.pdf")
Para obter mais informações sobre como trabalhar com várias páginas, consulte nosso guia de mesclagem ou divisão de PDFs .
Pronto para ver o que mais você pode fazer? Confira nossa página de tutoriais aqui: Recursos adicionais . Você também pode explorar como adicionar cabeçalhos e rodapés aos seus PDFs que contêm SVG ou aprender sobre marcas d'água personalizadas para dar identidade visual aos seus documentos.
- Use
TextAnnotationeAddTextAnnotation
Perguntas frequentes
Como faço para converter SVG em PDF em C#?
O IronPDF converte SVG em PDF usando o método HTML para PDF. Basta incorporar seu SVG em uma tag HTML com estilos de largura e altura explícitos e, em seguida, usar o ChromePdfRenderer do IronPDF para renderizar o HTML como um PDF. O importante é garantir que os atributos de tamanho corretos estejam definidos no elemento
.
Por que meu arquivo SVG não está aparecendo no PDF?
Elementos SVG podem não aparecer em PDFs gerados pelo IronPDF se não tiverem especificações explícitas de largura e altura. O mecanismo de renderização do Chrome usado pelo IronPDF exige que as dimensões sejam definidas por meio de atributos de estilo ou atributos de largura/altura na tag img. Sem essas informações, o SVG pode ficar com tamanho zero.
Quais são os diferentes métodos para incorporar SVGs na conversão para PDF?
O IronPDF suporta três métodos principais para incorporar SVGs: 1) SVG embutido com atributos de estilo para largura e altura, 2) Arquivos SVG externos referenciados via URL ou caminho de arquivo local e 3) SVGs codificados em Base64 incorporados diretamente no HTML. Todos os métodos exigem especificações de tamanho adequadas.
Posso converter arquivos SVG locais para PDF?
Sim, o IronPDF pode converter arquivos SVG locais para PDF. Use o método de caminho de arquivo, referenciando seus arquivos SVG armazenados no seu projeto através do atributo src da tag img. Lembre-se de incluir as especificações de largura e altura para uma renderização adequada.
Quais opções de renderização devo usar para a conversão de SVG para PDF?
Ao converter SVG para PDF com o IronPDF, use o ChromePdfRenderer com as opções de renderização apropriadas. Uma abordagem comum é adicionar um atraso de renderização usando WaitFor.RenderDelay(1000) para garantir que os SVGs sejam carregados completamente antes da conversão. Isso ajuda com SVGs complexos ou ao carregar recursos externos.
Como faço para salvar o SVG convertido como um arquivo PDF?
Após renderizar seu HTML contendo SVG com o ChromePdfRenderer do IronPDF, use o método SaveAs para salvar o arquivo PDF. Basta chamar SaveAs("nome_do_arquivo.pdf") no objeto PDF renderizado para salvá-lo no local especificado.

