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");
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");
ImportsIronPdfPrivate html AsString = "<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 AsPdfDocument = 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")
将本地 SVG 文件转换为 PDF 时,请使用文件路径方法。 这种方法可以很好地使用项目中存储的 SVG 资产:
using IronPdf;using System.IO;// Load SVG file contentstring svgPath = @"C:\assets\company-logo.svg";string svgContent = File.ReadAllText(svgPath);// Create HTML with embedded SVGstring 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 settingsChromePdfRenderer renderer = new ChromePdfRenderer();renderer.RenderingOptions.MarginTop = 10;renderer.RenderingOptions.MarginBottom = 10;renderer.RenderingOptions.PrintHtmlBackgrounds = true;// Generate PDFPdfDocument 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");
ImportsIronPdfImportsSystem.IO' Load SVG file contentDim svgPath AsString = "C:\assets\company-logo.svg"Dim svgContent AsString = File.ReadAllText(svgPath)' Create HTML with embedded SVGDim html AsString = $"<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 settingsDim renderer As New ChromePdfRenderer()renderer.RenderingOptions.MarginTop = 10renderer.RenderingOptions.MarginBottom = 10renderer.RenderingOptions.PrintHtmlBackgrounds = True' Generate PDFDim pdf AsPdfDocument = 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")
嵌入式 SVG 的 Base64 编码
对于需要将 SVG 数据直接嵌入 HTML 而不需要外部文件引用的情况,Base64 编码提供了可靠的解决方案。 我们的嵌入图片指南将详细解释这种方法:
using IronPdf;using System;// SVG content as stringstring 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 Base64byte[] svgBytes = System.Text.Encoding.UTF8.GetBytes(svgContent);string base64Svg = Convert.ToBase64String(svgBytes);// Create HTML with Base64 embedded SVGstring 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 PDFChromePdfRenderer 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");
ImportsIronPdfImportsSystemImportsSystem.Text' SVG content as stringDim svgContent AsString = "<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 Base64Dim svgBytes AsByte() = Encoding.UTF8.GetBytes(svgContent)Dim base64Svg AsString = Convert.ToBase64String(svgBytes)' Create HTML with Base64 embedded SVGDim html AsString = $"<html><body> <h2>Embedded SVG Example</h2> <img src='data:image/svg+xml;base64,{base64Svg}' style='width:150px;height:150px;' /></body></html>"' Render to PDFDim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = 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")
将 SVG 转换为 PDF 的最佳实践
1.始终指定尺寸
将 SVG 转换为 PDF 时最常见的问题是尺寸缺失或为零。 始终确保您的SVG元素具有明确的height值。 对于响应式设计,可考虑使用 viewport 设置 来控制 PDF 布局。
// Set custom DPI for better qualityrenderer.RenderingOptions.DPI = 300;// Use CSS transforms for scalingstring 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 qualityrenderer.RenderingOptions.DPI = 300' Use CSS transforms for scalingDim html AsString = "<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);' />"
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");
ImportsIronPdfImportsSystem.Collections.GenericImportsSystem.TextDim svgFiles As New List(OfString) From { "chart1.svg", "chart2.svg", "diagram.svg"}Dim htmlBuilder As New StringBuilder()htmlBuilder.Append("<html><body>")For Each svgFile AsStringIn svgFiles htmlBuilder.Append($" <div style='page-break-after:always;'> <img src='{svgFile}' style='width:600px;height:400px;' /> </div>")NexthtmlBuilder.Append("</body></html>")Dim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = 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")
using IronPDF 将 SVG 转换为 PDF 时,请使用带有适当 RenderingOptions 的 ChromePdfRenderer。一种常见的方法是使用 WaitFor.RenderDelay(1000)添加渲染延迟(RenderDelay),以确保 SVG 在转换前完全加载。这有助于处理复杂的 SVG 或加载外部资源。
如何将转换后的 SVG 保存为 PDF 文件?
using IronPDF 的 ChromePdfRenderer 渲染包含 SVG 的 HTML 后,使用 SaveAs 方法保存 PDF 文件。只需在渲染的 PDF 对象上调用 SaveAs("filename.pdf") 即可将其保存到指定位置。
How does IronPDF handle font rendering in SVGs?
IronPDF requires that fonts used within SVGs are properly embedded or referenced to ensure correct text rendering. You can manage fonts through IronPDF's font management features to guarantee consistency.
What are best practices for converting SVGs to PDF?
Best practices include specifying SVG dimensions, optimizing SVG files by simplifying paths and removing unnecessary metadata, and testing across different platforms to ensure consistent rendering with IronPDF.
How can I convert multiple SVG files into a single PDF using IronPDF?
To convert multiple SVGs into a single PDF, use IronPDF to embed each SVG in a separate HTML element with a page-break style for continuous PDF generation. This facilitates batch processing of SVGs.
Does IronPDF support responsive design for SVG to PDF conversion?
Yes, IronPDF supports responsive design elements by using viewport settings and CSS transformations. This allows for scalable and dynamically adjusted PDF layouts based on the SVG content you are converting.