如何使用C#將SVG轉換為PDF

將SVG轉換為C#中的PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

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。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 複製並運行這段程式碼片段。

    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");
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPDF,透過免費試用

    arrow pointer

如何以正確的大小將SVG渲染為PDF?

許多瀏覽器容忍沒有大小規格的SVG; 然而,我們的渲染引擎需要它們。 IronPDF使用的Chrome渲染引擎需要有明確的尺寸以正確渲染SVG元素。 如果未指定尺寸,則SVG可能不會出現在最終的PDF中,或者可能會以預期之外的尺寸渲染。

在IronPDF中處理SVG時,您有多種選擇以確保正確渲染:

  1. 具有樣式屬性的內聯SVG:直接在樣式屬性中新增height
  2. 外部SVG文件:通過URL或本地文件路徑參考SVG文件
  3. 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")
$vbLabelText   $csharpLabel

生成的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")
$vbLabelText   $csharpLabel

嵌入式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")
$vbLabelText   $csharpLabel
Icon Quote related to 嵌入式SVG的Base64編碼

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 嵌入式SVG的Base64編碼

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 嵌入式SVG的Base64編碼

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 嵌入式SVG的Base64編碼

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 嵌入式SVG的Base64編碼

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 嵌入式SVG的Base64編碼

David Jones

首席軟體工程師,Agorus Build

查看案例研究

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
$vbLabelText   $csharpLabel

對於高級JavaScript處理,請探索我們的JavaScript渲染指南

3. 優化SVG文件

在轉換之前,優化您的SVG文件:

  • 去除不必要的元資料
  • 簡化路徑
  • 將文字轉換為路徑以確保一致的渲染
  • 使用適當的壓縮

4. 測試跨平台相容性

SVG渲染可能因不同操作系統而有所不同。 在以下平台上測試您的轉換:

常見SVG問題的故障排除

SVG未出現在PDF中

如果您的SVG沒有出現在生成的PDF中:

  1. 驗證尺寸是否設置正確
  2. 檢查文件路徑或URL是否可存取
  3. 確保SVG文件的MIME型別正確
  4. 查看我們的像素完美渲染指南

縮放和解析度問題

針對不同縮放比例的高品質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);' />"
$vbLabelText   $csharpLabel

SVG中的字體渲染

當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")
$vbLabelText   $csharpLabel

有關處理多個頁面的更多資訊,請參閱我們的合併或分割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')以將其保存到您指定的位置。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 20,296,129 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。