將SVG轉換為C#中的PDF
IronPDF使用HTML到PDF的方法將SVG圖形轉換為PDF文件 - 將您的SVG嵌入到height樣式以確保正確呈現。
IronPDF支援通過HTML到PDF的方法將SVG圖形渲染到PDF文件中。 SVG(可縮放矢量圖形)文件因其可縮放性和在任何大小下清晰的渲染而被廣泛用於標誌、圖標、插圖和圖表。將SVG轉換為PDF對於建立列印就緒文件、存檔目的以及確保在不同平台上的一致顯示很重要。
注意:在嵌入SVG時設定height樣式屬性,否則它可能會縮小到零大小並不會在渲染的PDF中出現。
快速入門:輕鬆將SVG轉換為PDF
使用IronPDF在C#中將SVG文件轉換為PDF。 此程式碼片段展示了通過HTML img 標籤嵌入SVG的指定尺寸,這是成功渲染的關鍵步驟。 遵循本指導以快速實現,確保您的SVG被準確渲染並保存為PDF。
-
使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf
-
複製並運行這段程式碼片段。
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"); -
部署以在您的實時環境中測試
今天就開始在您的專案中使用IronPDF,透過免費試用
最小工作流程 (5步)
- 安裝
IronPdf程式庫以將SVG轉換為PDF - 使用HTML中的
img標籤導入SVG圖像 - 利用
IronPdf中的不同渲染方法生成PDF - 使用
SaveAs方法保存包含SVG圖像的PDF文件 - 檢查指定位置的PDF
如何以正確的大小將SVG渲染為PDF?
許多瀏覽器容忍沒有大小規格的SVG; 然而,我們的渲染引擎需要它們。 IronPDF使用的Chrome渲染引擎需要有明確的尺寸以正確渲染SVG元素。 如果未指定尺寸,則SVG可能不會出現在最終的PDF中,或者可能會以預期之外的尺寸渲染。
在IronPDF中處理SVG時,您有多種選擇以確保正確渲染:
- 具有樣式屬性的內聯SVG:直接在樣式屬性中新增
height - 外部SVG文件:通過URL或本地文件路徑參考SVG文件
- Base64編碼的SVG:將SVG直接作為Base64字串嵌入在HTML中
欲了解更多高級HTML渲染選項,請參閱我們的渲染選項綜合指南。
: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")
生成的PDF長什麼樣?
此外,或作為替代方案,SVG節點可能已分配明確的height屬性。 另見CodePen上的SVG樣式範例。
將SVG渲染到PDF範例
使用本地SVG文件
在將本地SVG文件轉換為PDF時,請使用文件路徑方法。 此方法適用於儲存在您項目中的SVG資產:
:path=/static-assets/pdf/content-code-examples/how-to/SVGs-3.cs
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")
嵌入式SVG的Base64編碼
針對需要直接在HTML中嵌入SVG資料而無需外部文件引用的情景,Base64編碼提供了可靠的解決方案。 在我們的嵌入圖像指南中詳細介紹了這種方法:
:path=/static-assets/pdf/content-code-examples/how-to/SVGs-4.cs
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")
SVG到PDF轉換的最佳做法
1. 始終指定尺寸
將SVG轉換為PDF時最常見的問題是缺少或零尺寸。 始終確保您的SVG元素具有清晰的height值。 對於響應式設計,考慮使用視口設置來控制PDF佈局。
2. 使用渲染延遲處理複雜的SVG
具有動畫或JavaScript的複雜SVG文件可能需要額外的渲染時間。使用RenderDelay選項以確保完整渲染:
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
對於高級JavaScript處理,請探索我們的JavaScript渲染指南。
3. 優化SVG文件
在轉換之前,優化您的SVG文件:
- 去除不必要的元資料
- 簡化路徑
- 將文字轉換為路徑以確保一致的渲染
- 使用適當的壓縮
4. 測試跨平台相容性
SVG渲染可能因不同操作系統而有所不同。 在以下平台上測試您的轉換:
常見SVG問題的故障排除
SVG未出現在PDF中
如果您的SVG沒有出現在生成的PDF中:
- 驗證尺寸是否設置正確
- 檢查文件路徑或URL是否可存取
- 確保SVG文件的MIME型別正確
- 查看我們的像素完美渲染指南
縮放和解析度問題
針對不同縮放比例的高品質SVG渲染:
// 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);' />"
SVG中的字體渲染
高級SVG轉換技術
批量處理多個SVGs
要將多個SVG文件轉換為單個PDF文件:
:path=/static-assets/pdf/content-code-examples/how-to/SVGs-7.cs
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")
有關處理多個頁面的更多資訊,請參閱我們的合併或分割PDF指南。
準備好看看您還能做什麼嗎? 查看我們的教程頁面:額外功能。 您還可以探索如何將頁眉和頁腳新增到包含SVG的PDF中,或者學習有關自定義水印以品牌化您的文件。
- 使用
AddTextAnnotation
常見問題
我如何在C#中將SVG轉換為PDF?
IronPDF 使用 HTML 到 PDF 方法將 SVG 轉換為 PDF。只需將您的SVG嵌入HTML的img標籤中,並使用明確的寬度和高度樣式,然後使用IronPDF的ChromePdfRenderer來將HTML呈現為PDF。關鍵是確保在img元素上設置適當的大小屬性。
為什麼我的SVG沒有出現在PDF中?
如果SVG缺少明確的寬度和高度規範,IronPDF生成的PDF中可能不會顯示SVG。IronPDF使用的Chrome呈現引擎需要通過樣式屬性或img標籤上的寬度/高度屬性設置尺寸。如果沒有這些,SVG可能會縮小到零大小。
有哪些不同的方法將SVG嵌入PDF轉換中?
IronPDF支持三種主要的SVG嵌入方法:1) 帶有寬度和高度樣式屬性的內嵌SVG,2) 通過URL或本地文件路徑引用的外部SVG文件,和3) 在HTML中直接嵌入的Base64編碼SVG。所有方法都需要正確的大小規範。
我可以轉換本地SVG文件為PDF嗎?
可以,IronPDF可以將本地SVG文件轉換為PDF。使用文件路徑方法,通過img標籤的src屬性引用儲存在您專案中的SVG資產。請記得包含寬度和高度規範以確保正確呈現。
我應該使用哪些呈現選項進行SVG到PDF的轉換?
使用IronPDF將SVG轉換為PDF時,使用ChromePdfRenderer搭配適當的RenderingOptions。一種常見的方法是使用WaitFor.RenderDelay(1000)新增RenderDelay,以確保在轉換前SVG完全載入。這有助於處理複雜的SVG或載入外部資源時。
如何將轉換後的SVG保存為PDF檔案?
在使用IronPDF的ChromePdfRenderer呈現包含SVG的HTML後,使用SaveAs方法保存PDF檔案。只需在呈現的PDF物件上呼叫SaveAs('filename.pdf')以將其保存到您指定的位置。

