C#でPDFをSVGに変換する方法

Ahmad Sohail
Ahmad Sohail
Updated: 2026年9月18日

IronPDFのPdfToSvg名前空間は、PDFページをスケーラブルベクターグラフィックスに変換するための専用APIを提供します。SVG(スケーラブルベクターグラフィックス)はXMLベースのフォーマットで、どのズームレベルでもシャープなままです。ラスター画像(PNG、JPEG)とは異なり、SVG出力は拡大してもピクセル化しません。PDFページをSVGに変換することは、ドキュメントコンテンツをウェブページに埋め込んだり、解像度に依存しないプレビューを生成したり、レポート、請求書、技術図面からベクターグラフィックスを抽出するのに役立ちます。

変換はページごとに行われます。PdfDocument.Open()でPDFを開き、Pagesコレクションを通じて個々のページにアクセスし、各PdfPageでSaveAsSvg()またはToSvgString()を呼び出してSVG出力を生成します。すべての変換メソッドには非同期バリアントがあります。

これはPDFからSVGへの方向です。既存のPDFファイルからベクターSVGを抽出します。逆のワークフロー(新しいPDFにSVGグラフィックスを埋め込む)については、SVG to PDF how-toを参照してください。

無料の30日間トライアルを開始して、PDFからSVGへの変換をテストしてください。

NuGetNuGetでインストール

PM > Install-Package IronPdf

Install IronPDF by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

以下の例では、PDFを開き、その最初のページをSVGファイルとして保存します。

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2このコード スニペットをコピーして実行します。

    using PdfToSvg;
    
    using var pdf = PdfDocument.Open("report.pdf");
    pdf.Pages[0].SaveAsSvg("page-one.svg");
  3. 3実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル
    arrow pointer
クイックスタート

最小限のワークフロー(3ステップ)

  1. NuGetを介してIronPDFをインストールします:Install-Package IronPdf
  2. PdfToSvg名前空間からPdfDocument.Open()でPDFを開きます
  3. 任意のページでSaveAsSvg()を呼び出してSVGファイルを書き込みます

単一のPDFページをSVGに変換する方法

PdfPageクラスは4つの変換メソッドを提供します:

  • SaveAsSvg():ページをファイルパスまたはStreamに書き込みます。
  • SaveAsSvgAsync():SaveAsSvg()の非ブロッキングバリアント。
  • ToSvgString():SVGマークアップをstringとして返します。テンプレートエンジン、HTTPレスポンス、または下流のパイプラインに出力を供給する際に便利です。
  • ToSvgStringAsync():ToSvgString()の非ブロッキングバリアント。

これらの4つはすべて、オプションのSvgConversionOptions引数とCancellationTokenを受け入れます。

以下の例では、最初のページをファイルに保存し、同じページを文字列として取得し、ストリームに書き込みます。これにより、3つの出力ターゲットすべてが示されます。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("invoice.pdf");

// Save to a file
pdf.Pages[0].SaveAsSvg("invoice-page1.svg");

// Get SVG as a string
string svgMarkup = pdf.Pages[0].ToSvgString();
Console.WriteLine($"SVG length: {svgMarkup.Length} characters");

// Save to a stream
using var stream = new FileStream("invoice-page1-stream.svg", FileMode.Create);
pdf.Pages[0].SaveAsSvg(stream);

PdfDocumentはIDisposableを実装しているため、usingステートメントでラップすると、変換が終了したときにネイティブリソースが解放されます。Pagesコレクションはゼロインデックスであるため、Pages[0]は最初のページです。

ご注意: PdfToSvg.PdfDocumentはIronPdf.PdfDocumentとは異なるクラスです。using PdfToSvg;ディレクティブでスコープに入れます。

PDFからSVGへの変換が適しているのはいつですか?

ページがズームされる、ウェブレイアウトに埋め込まれる、または変換後に再スタイルされる場合、SVGは優れた出力です。テキストは選択可能で検索可能なままであり、パスはベクターツールで編集可能なままです。スキャンされたページや写真ページには保存するベクターコンテンツがないため、ラスターエクスポートは小さく、何も失いません。

PDFのすべてのページをSVGに変換する方法

Pagesコレクションはゼロインデックスであるため、ループインデックスに1を加えると、各出力ファイルの人間が読めるページ番号が得られます。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("multi-page-report.pdf");

Console.WriteLine($"Total pages: {pdf.Pages.Count}");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    string outputPath = $"page_{i + 1}.svg";
    page.SaveAsSvg(outputPath);
    Console.WriteLine($"Saved: {outputPath}");
}
ご注意: SVGはPDFのように複数ページのドキュメントをサポートしていないため、10ページのPDFは10個の個別のSVGファイルを生成します。

大きなドキュメントの場合、次のセクションで説明する非同期アプローチは、変換中にアプリケーションスレッドをブロックしないようにします。

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

Milan Jovanovic

Microsoft MVP

ケーススタディを見る

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る

PDFからSVGへの変換に非同期メソッドを使用する方法

非同期バリアントであるSaveAsSvgAsync()とToSvgStringAsync()は、I/Oをメインスレッドから外します。PdfDocument.OpenAsync()もPDFを非同期にロードします。これらのメソッドは、ASP.NET Coreハンドラー、バックグラウンドサービス、または応答性のあるUIを持つアプリケーションでの使用に最適です。

以下の例では、PDFを開き、すべてのページを非同期に変換するため、作業が実行されている間、呼び出しスレッドは自由に保たれます。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = await PdfDocument.OpenAsync("dashboard.pdf");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    await page.SaveAsSvgAsync($"dashboard_page_{i + 1}.svg");
}

// Or get the SVG markup as a string
string firstPageSvg = await pdf.Pages[0].ToSvgStringAsync();

SVG変換オプションを設定する方法

SvgConversionOptionsは、SVG出力が生成される方法を制御します。最も一般的に使用されるプロパティは次のとおりです:

  • IncludeAnnotations:PDF注釈レイヤーをSVG出力にレンダリングするためにtrueに設定します
  • IncludeLinks:PDFハイパーリンクをSVGの<a>要素として保持し、ブラウザでのナビゲーションを可能にするためにtrueに設定します
  • IncludeHiddenText:PDFコンテンツストリームに存在するが表示されないテキストを表示し、アクセシビリティやテキスト抽出パイプラインに役立ちます
  • MinStrokeWidth:通常の表示スケールでヘアラインパスが消えないように、レンダリングされたストロークの下限(SVGユーザーユニットで)を設定します

以下のコードは、注釈とリンクをオンにし、最小ストローク幅を設定し、それらのオプションを使用してすべてのページをエクスポートします。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

var options = new SvgConversionOptions
{
    IncludeAnnotations = true,
    IncludeLinks = true,
    IncludeHiddenText = false,
    MinStrokeWidth = 0.5
};

using var pdf = PdfDocument.Open("annotated-report.pdf");

for (int i = 0; i < pdf.Pages.Count; i++)
{
    var page = pdf.Pages[i];
    page.SaveAsSvg($"page_{i + 1}.svg", options);
}

テキスト間隔の処理方法を制御する追加のプロパティが2つあります。CollapseSpaceEmbeddedFontとCollapseSpaceLocalFontは、隣接する文字間のギャップが単一のテキストランに折りたたまれるフォントサイズの分数としてのしきい値を設定します。タイトな値はより多くの間隔の忠実性を保持し、緩い値はより小さなSVGファイルを生成します。

高度なユースケースでは、FontResolverプロパティは、PDFフォント参照をローカルフォントリソースにマッピングするカスタムリゾルバーを受け入れます。これは、ソースドキュメントが埋め込まれていないフォントを参照している場合に不可欠です。ImageResolverプロパティは、PDF内のラスター画像がSVG出力でどのように処理されるかを制御します。インラインエンコーディングは自己完結型のSVGファイルを生成し、外部パス解決はSVGをコンパクトに保ちます。SvgConversionOptions APIリファレンスは、すべての設定可能なプロパティを文書化しています。

SVG出力でPDFレイヤーの可視性を制御する方法

レイヤー化されたPDFは、PdfDocumentのOptionalContentGroupsコレクションを通じてそのレイヤーを公開します。各エントリは、読み取り専用のName(ソースドキュメントからのレイヤーラベル)とget/setVisibleフラグをペアにしたOptionalContentGroupです。Visibleを設定すると、そのレイヤーがSVG変換中にレンダリングされるかどうかが制御されるため、単一のPDFでファイルを編集せずに異なるSVGバリアントを生成できます。

事前にレイヤー名を知る必要はありません。コレクションはドキュメントに実際に存在するレイヤーを反映しているため、それを列挙し、各Nameを読み取り、非表示にしたいものをオフにすることができます。ToString()はNameと同じ値を返すため、ログに便利です。

以下の例では、PDF内のすべてのレイヤーをリストし、Watermarkという名前のレイヤーを非表示にし、そのレイヤーを抑制して最初のページをエクスポートします。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

using var pdf = PdfDocument.Open("technical-drawing.pdf");

// List the layers that actually exist in this PDF
foreach (var layer in pdf.OptionalContentGroups)
{
    Console.WriteLine($"{layer.Name} visible: {layer.Visible}");
}

// Hide the watermark layer; every other layer stays visible
foreach (var layer in pdf.OptionalContentGroups)
{
    if (layer.Name == "Watermark")
    {
        layer.Visible = false;
    }
}

// Visibility set on OptionalContentGroups is applied during conversion
pdf.Pages[0].SaveAsSvg("drawing-no-watermark.svg");

典型的なユースケースは、注釈、寸法、または透かしレイヤーを独立して切り替える必要がある技術図面です。可視性は変換ごとに設定されるため、同じソースPDFでファイルに変更を加えずに複数のSVGバリアントを生成できます。

ストリームからおよびパスワードでPDFを開く方法

PdfDocument.Open()は、ファイルパスに加えてStreamを受け入れます。leaveOpenパラメータ(デフォルトはfalse)は、ドキュメントが破棄されたときにストリームが閉じられるかどうかを制御します。パスとストリームのオーバーロードは、暗号化されたドキュメントのパスワードを提供するなどの構成のためのOpenOptionsオブジェクトと、長時間実行されるワークフローでの協調キャンセルのためのCancellationTokenを受け入れます。

スニペットはストリームからPDFを開き、その最初のページをSVGとして保存し、ファイルが暗号化されているかどうか、そのタイトル、およびページ数を出力します。

using PdfToSvg;
using PdfDocument = PdfToSvg.PdfDocument;

// Open from a stream (e.g., downloaded from a web API)
using var fileStream = File.OpenRead("document.pdf");
using var pdf = PdfDocument.Open(fileStream, leaveOpen: false);
pdf.Pages[0].SaveAsSvg("from-stream.svg");

// Check if a PDF is encrypted
Console.WriteLine($"Encrypted: {pdf.IsEncrypted}");

// Access document metadata
Console.WriteLine($"Title: {pdf.Info.Title}");
Console.WriteLine($"Pages: {pdf.Pages.Count}");

Infoプロパティは、タイトル、著者、作成日を含むドキュメントメタデータを公開します。Permissionsプロパティは、PDFが許可する操作(印刷、コピー)を報告し、IsEncryptedはファイルを開くためにパスワードが必要かどうかを示します。

次のステップ

PdfToSvg名前空間は、PDFページをSVGファイル、ストリーム、または文字列に変換します。それはページごとに動作し、注釈、リンク、テキストの可視性、ストローク幅、レイヤーの切り替えを完全に制御します。すべてのメソッドには非同期バリアントがあり、非ブロッキングワークフローを実現します。

完全な変換メソッドの表面についてはPdfPage APIリファレンスを、すべての設定可能なプロパティについてはSvgConversionOptionsリファレンスを、オープンおよびロードオプションについてはPdfDocumentリファレンスを参照してください。逆方向(SVGをPDFに埋め込む)については、SVG to PDF how-toを参照してください。

ライセンスオプションを表示し、$999から始めます。

よくある質問

PDFファイルをSVG形式に変換する目的は何ですか?

PDFファイルをSVG形式に変換することで、ドキュメントの内容をウェブページに埋め込んだり、解像度に依存しないプレビューを生成したり、レポート、請求書、技術図面からベクターグラフィックスを抽出したりできます。SVGはスケーラブルでピクセル化しないため、ウェブやデザインアプリケーションに最適です。

IronPDFのPdfToSvgをPDFからSVGへの変換にどのように利用できますか?

IronPDFのPdfToSvg名前空間は、PDFページをSVG形式に変換するための専用APIを提供します。PdfDocument.Open()でPDFを開き、Pagesコレクションを通じて個々のページにアクセスし、各PdfPageでSaveAsSvg()またはToSvgString()を呼び出してSVG出力を生成できます。

IronPDFを使用してPDFページを非同期でSVGに変換できますか?

はい、IronPDFは非同期のPDFからSVGへの変換をサポートしています。SaveAsSvgAsync()およびToSvgStringAsync()メソッドを使用して、I/O操作をメインスレッドから外すことができ、応答性の高いアプリケーションに役立ちます。

IronPDFのSvgConversionOptionsとは何ですか?

IronPDFのSvgConversionOptionsは、SVG出力の生成方法を制御します。出力に注釈、リンク、隠しテキストを含めるかどうか、最小ストローク幅を設定するかどうかなどのオプションがあります。これらのオプションにより、SVG変換プロセスをカスタマイズできます。

IronPDFを使用してPDFをSVGに変換する際にレイヤーの可視性を制御することは可能ですか?

はい、IronPDFはPdfDocumentのOptionalContentGroupsコレクションを使用してPDFレイヤーの可視性を制御できます。特定のレイヤーの可視性を切り替えることで、SVG変換中にレンダリングされるかどうかを決定できます。

IronPDFは、SVGへの変換のために暗号化されたPDFファイルをどのように処理しますか?

IronPDFは、OpenOptionsオブジェクトを使用して暗号化されたPDFファイルを開くことができ、パスワードを提供することが含まれます。これにより、認証後に暗号化されたPDFをSVGに変換できます。

ウェブアプリケーションでPDFをSVG形式にする利点は何ですか?

SVG形式は、ピクセル化せずに高品質でスケーラブルなグラフィックスを維持し、選択可能で検索可能なテキストをサポートし、CSSやスクリプトを使用してスタイルを変更できるため、ウェブアプリケーションにとって有益です。

IronPDFはPDFのすべてのページを個別のSVGファイルに変換できますか?

はい、IronPDFはPDFのすべてのページを個別のSVGファイルに変換できます。Pagesコレクションを反復処理することで、各ページを個別のSVGファイルとして保存でき、複数ページのPDFに便利です。

IronPDFを使用してPDFをSVGに変換するための最小の手順は何ですか?

IronPDFを使用してPDFをSVGに変換するには、NuGetを介してIronPDFをインストールし、PdfToSvg名前空間からPdfDocument.Open()でPDFを開き、任意のページでSaveAsSvg()を呼び出してSVGファイルを書き込みます。

IronPDFは変換目的でストリームからPDFを開くことをサポートしていますか?

はい、IronPDFはストリームからPDFを開くことをサポートしています。PdfDocument.Open()をストリーム入力で使用でき、PDFがファイルとして保存されていないが他のソースからストリームされているシナリオで柔軟に対応できます。

Ahmadは、C#、Python、およびウェブ技術に強い基盤を持つフルスタック開発者です。彼はスケーラブルなソフトウェアソリューションの構築に深い関心を持ち、デザインと機能が実際のアプリケーションでどのように融合するかを探求することを楽しんでいます。

詳しく読む

準備はできましたか?

Nuget Downloads 21,916,531バージョン:2026.11リリースされたばかり