移行ガイド fo.netからIronPDFへの移行方法 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る fo.net (FO.NET) からIronPDFへの移行は、.NET PDF 生成プロセスの主要な更新です。 このガイドでは、開発チームが既に持っているスキルを活用して、コードベースを古い XSL-FO マークアップから最新の HTML/CSS ベースの PDF 生成に移行するための、わかりやすく段階的な方法を紹介します。 なぜfo.netからIronPDFへ移行するのか fo.netの課題 fo.net は、現在の開発にはいくつかの制限がある XSL-FO から PDF へのレンダラーです。 1.時代遅れのテクノロジー: XSL-FO (Extensible Stylesheet Language Formatting Objects) は 2001 年の W3C 仕様であり、2006 年以降更新されておらず、時代遅れであると広く考えられています。 2.複雑な学習曲線: XSL-FO では、特殊な書式設定オブジェクト ( fo:block 、 fo:table 、 fo:page-sequenceなど) を使用した複雑な XML ベースのマークアップを学習する必要があります。 HTML/CSS はサポートされていません。fo.net は HTML または CSS をレンダリングできないため、HTML から XSL-FO マークアップへの手動変換が必要です。 4.メンテナンスされていない:元の CodePlex リポジトリは廃止されています。 GitHubのフォークは現在アクティブにメンテナンスされていません。 Windows のみ: fo.net はSystem.Drawingに内部的に依存しているため、Linux/macOS では動作しません。 6.最新機能が限られている:JavaScriptのサポート、CSS3、フレックスボックス/グリッド、最新の Web フォントはありません。 URL レンダリングなし: fo.net は Web ページを直接レンダリングできないため、手動で HTML から XSL-FO に変換する必要があります。 fo.netとIronPDFの比較</fo.net アスペクト fo.net (FO.NET) IronPDF 入力フォーマット XSL-FO(古いXML) HTML/CSS(最新のウェブ標準) 学習曲線 スティープ(XSL-FOの専門知識) ジェントル(HTML/CSSの知識) メンテナンス メンテナンスされていない 毎月積極的にメンテナンス プラットフォームサポート Windowsのみ 真のクロスプラットフォーム (.NET 6/7/8/9/10+) CSSサポート なし フルCSS3(フレックスボックス、グリッド) JavaScript なし JavaScriptフルサポート URLレンダリング サポートされていません 内蔵 最新の機能 制限的 ヘッダー、フッター、透かし、セキュリティ ドキュメンテーション 古い 徹底的なチュートリアル なぜ切り替えは理にかなっているのか fo.netは、XSL-FOが文書フォーマットの標準になると予想されたときに設計されました。 そのような期待は実現しませんでした。 HTML/CSSは普遍的な文書フォーマットとなり、XSL-FOを知っている開発者が1%未満であるのに対し、HTML/CSSを知っている開発者は98%以上にのぼります。 ほとんどのXSL-FOリソースは2005年から2010年のもので、メンテナンスがますます難しくなっています。 IronPDFは、2025年まで、そして2026年まで、.NET 10とC# 14を含む最新の.NETバージョンをフルサポートし、すでに持っているスキルを使ってプロフェッショナルなPDFを作成することができます。 始める前に 前提条件 .NET環境: IronPDFは.NET Framework 4.6.2以降、.NET Core 3.1以降、.NET 5/6/7/8/9以降をサポートしています。 NuGetアクセス: NuGetからパッケージをインストールできることを確認する 3.ライセンスキー: ironpdf.comから本番環境で使用するIronPDFライセンスキーを取得します。 プロジェクトのバックアップ # Create a backup branch git checkout -b pre-ironpdf-migration git add . git commit -m "Backup before fo.net toIronPDFmigration" # Create a backup branch git checkout -b pre-ironpdf-migration git add . git commit -m "Backup before fo.net toIronPDFmigration" SHELL すべてのfo.netの使用法を特定する # Find all fo.net references grep -r "FonetDriver\|Fonet\|\.fo\"\|xsl-region" --include="*.cs" --include="*.csproj" . # Find all XSL-FO template files find . -name "*.fo" -o -name "*.xslfo" -o -name "*xsl-fo*" # Find all fo.net references grep -r "FonetDriver\|Fonet\|\.fo\"\|xsl-region" --include="*.cs" --include="*.csproj" . # Find all XSL-FO template files find . -name "*.fo" -o -name "*.xslfo" -o -name "*xsl-fo*" SHELL XSL-FOテンプレートを文書化する 移行する前に、すべてのXSL-FOファイルをカタログ化し、メモしてください: ページ寸法と余白 使用フォント 表とその構造 ヘッダーとフッター (`fo:static-content) ページ番号のパターン 画像参照 クイック スタート マイグレーション ステップ 1: NuGet パッケージを更新する # Remove fo.net package dotnet remove package Fonet dotnet remove package FO.NET # Install IronPDF dotnet add package IronPdf # Remove fo.net package dotnet remove package Fonet dotnet remove package FO.NET # Install IronPDF dotnet add package IronPdf SHELL ステップ 2: 名前空間の更新 // Before (fo.net) using Fonet; using Fonet.Render.Pdf; using System.Xml; // After (IronPDF) using IronPdf; using IronPdf.Rendering; // Before (fo.net) using Fonet; using Fonet.Render.Pdf; using System.Xml; // After (IronPDF) using IronPdf; using IronPdf.Rendering; $vbLabelText $csharpLabel ステップ3: IronPDFを初期化する // Set license key at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Set license key at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel ステップ 4: 基本的な変換パターン // Before (fo.net with XSL-FO) FonetDriver driver = FonetDriver.Make(); using (FileStream output = new FileStream("output.pdf", FileMode.Create)) { driver.Render(new StringReader(xslFoContent), output); } // After (IronPDF with HTML) var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); // Before (fo.net with XSL-FO) FonetDriver driver = FonetDriver.Make(); using (FileStream output = new FileStream("output.pdf", FileMode.Create)) { driver.Render(new StringReader(xslFoContent), output); } // After (IronPDF with HTML) var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); $vbLabelText $csharpLabel 完全な API リファレンス 名前空間マッピング fo.net 名前空間 IronPDF 同等物 ノート Fonet|IronPdf`(IronPDF 主な名前空間 Fonet.Render.Pdf IronPdf(IronPDF PDFレンダリング Fonet.Layout 該当なし レイアウトはCSSで処理 Fonet.Fo 該当なし オブジェクトのフォーマット → HTML Fonet.Image IronPdf(IronPDF 画像処理内蔵 FonetDriverからChromePdfRendererへの翻訳 FonetDriver メソッド IronPDF 同等物 ノート FonetDriver.Make()を使用してください。 new ChromePdfRenderer(). レンダラーの作成 driver.Render(inputStream, outputStream). renderer.RenderHtmlAsPdf(html). ストリームベース driver.Render(inputFile, outputStream). renderer.RenderHtmlFileAsPdf(path)のようにします。 ファイルベース ドライバー.ベースディレクトリ RenderingOptions.BaseUrl リソースのベースパス driver.OnError += handler. レンダリング周りのトライ/キャッチ エラー処理 レンダリングオプション (PDF 設定) fo.net (XSL-FO属性) IronPDF レンダリングオプション ノート ページハイト PaperSizeまたはSetCustomPaperSize()。 ページサイズ ページ幅 用紙サイズ 標準またはカスタム マージントップ マージントップ 単位:ミリメートル マージンボトム マージンボトム 単位:ミリメートル マージンレフト マージンレフト 単位:ミリメートル margin-right マージンライト 単位:ミリメートル リファレンス指向 ペーパーオリエンテーション ポートレート/風景 XSL-FOからHTMLへの変換ガイド XSL-FO要素をHTML/CSSに変換する このfo.net移行における基本的なシフトは、XSL-FO要素を同等のHTMLに変換することです: XSL-FO要素 HTML/CSS相当 ノート <fo:root>のようにします。 <html> ルート要素 <fo:layout-master-set></code>|CSS@page`ルール ページ設定 <fo:simple-page-master>。 CSS @ページ` ページ定義 <fo:page-sequence></code>|または` を使用してください。 ページ内容 <fo:flow>のようにします。 <main> または <div> を使用してください。 主な内容 HtmlHeaderFooter` ヘッダー/フッター <fo:block>のようにします。 <p>、<div>、<h1>-<h6>。 ブロックコンテンツ <fo:inline>のようにします。 <span> インラインコンテンツ <fo:table></code>|` 表 <tr> 表の行 <td>、<th>。 表セル <ul>、<ol>。 リスト <li> リスト項目 <img> 画像 {ページ}プレースホルダ ページ数 {総ページ数}` 総ページ数 <fo:basic-link></code>|` ハイパーリンク XSL-FOプロパティからCSSへ XSL-FOプロパティ CSS相当 翻訳例 font-family font-family 同じ構文 フォントサイズ|フォントサイズ` 同じ構文 フォントウェイト フォントウェイト bold、normal、700。 テキストアライン テキストアライン left、center、right、justify。 カラー カラー 16進数、RGB、名前 背景色 背景色 同じ構文 スペース・ビフォー マージントップ 翻訳前 スペースアフター マージンボトム 要素 start-indent</code>|<code>マージンレフト 左インデント keep-together page-break-inside: 避けてください。 改行を防ぐ break-before="page"を使用してください。 page-break-before: always 強制改ページ コード例 例1: 基本的なHTMLからPDFへ ビフォア(XSL-FO付きfo.net): // NuGet: Install-Package Fonet using Fonet; using Fonet.Render.Pdf; using System.IO; using System.Xml; class Program { static void Main() { // fo.net requires XSL-FO format, not HTML // First convert HTML to XSL-FO (manual process) string xslFo = @"<?xml version='1.0' encoding='utf-8'?> <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'> <fo:layout-master-set> <fo:simple-page-master master-name='page'> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference='page'> <fo:flow flow-name='xsl-region-body'> <fo:block>Hello World</fo:block> </fo:flow> </fo:page-sequence> </fo:root>"; FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("output.pdf", FileMode.Create)); } } // NuGet: Install-Package Fonet using Fonet; using Fonet.Render.Pdf; using System.IO; using System.Xml; class Program { static void Main() { // fo.net requires XSL-FO format, not HTML // First convert HTML to XSL-FO (manual process) string xslFo = @"<?xml version='1.0' encoding='utf-8'?> <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'> <fo:layout-master-set> <fo:simple-page-master master-name='page'> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference='page'> <fo:flow flow-name='xsl-region-body'> <fo:block>Hello World</fo:block> </fo:flow> </fo:page-sequence> </fo:root>"; FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("output.pdf", FileMode.Create)); } } $vbLabelText $csharpLabel 翻訳後(HTML付きIronPDF): // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<h1>Hello World</h1><p>This is HTML content.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<h1>Hello World</h1><p>This is HTML content.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel IronPDFのアプローチは25行以上のXSL-FOマークアップをわずか4行のクリーンなC#コードに削減します。 HTMLからPDFへのオプションについては、IronPDF HTML to PDF documentationをご覧ください。 例2: カスタム設定のPDF ビフォア(XSL-FO付きfo.net): // NuGet: Install-Package Fonet using Fonet; using Fonet.Render.Pdf; using System.IO; class Program { static void Main() { // fo.net settings are configured in XSL-FO markup string xslFo = @"<?xml version='1.0' encoding='utf-8'?> <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'> <fo:layout-master-set> <fo:simple-page-master master-name='A4' page-height='297mm' page-width='210mm' margin-top='20mm' margin-bottom='20mm' margin-left='25mm' margin-right='25mm'> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference='A4'> <fo:flow flow-name='xsl-region-body'> <fo:block font-size='14pt'>Custom PDF</fo:block> </fo:flow> </fo:page-sequence> </fo:root>"; FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("custom.pdf", FileMode.Create)); } } // NuGet: Install-Package Fonet using Fonet; using Fonet.Render.Pdf; using System.IO; class Program { static void Main() { // fo.net settings are configured in XSL-FO markup string xslFo = @"<?xml version='1.0' encoding='utf-8'?> <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'> <fo:layout-master-set> <fo:simple-page-master master-name='A4' page-height='297mm' page-width='210mm' margin-top='20mm' margin-bottom='20mm' margin-left='25mm' margin-right='25mm'> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference='A4'> <fo:flow flow-name='xsl-region-body'> <fo:block font-size='14pt'>Custom PDF</fo:block> </fo:flow> </fo:page-sequence> </fo:root>"; FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("custom.pdf", FileMode.Create)); } } $vbLabelText $csharpLabel 翻訳後(HTML付きIronPDF): // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Engines.Chrome; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 25; renderer.RenderingOptions.MarginRight = 25; string html = "<h1 style='font-size:14pt'>Custom PDF</h1>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("custom.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Engines.Chrome; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 25; renderer.RenderingOptions.MarginRight = 25; string html = "<h1 style='font-size:14pt'>Custom PDF</h1>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("custom.pdf"); } } $vbLabelText $csharpLabel IronPdfはXMLマークアップに設定を埋め込む代わりに、プログラムによるレンダリングオプションを提供します。 例3: URLからPDFへ Before(fo.netはサポートされていません):。 // NuGet: Install-Package Fonet using Fonet; using System.IO; using System.Net; class Program { static void Main() { // fo.net does not support URL rendering directly // Must manually download, convert HTML to XSL-FO, then render string url = "https://example.com"; string html = new WebClient().DownloadString(url); // Manual conversion from HTML to XSL-FO required (complex) string xslFo = ConvertHtmlToXslFo(html); // Not built-in FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("webpage.pdf", FileMode.Create)); } static string ConvertHtmlToXslFo(string html) { // Custom implementation required - extremely complex throw new System.NotImplementedException(); } } // NuGet: Install-Package Fonet using Fonet; using System.IO; using System.Net; class Program { static void Main() { // fo.net does not support URL rendering directly // Must manually download, convert HTML to XSL-FO, then render string url = "https://example.com"; string html = new WebClient().DownloadString(url); // Manual conversion from HTML to XSL-FO required (complex) string xslFo = ConvertHtmlToXslFo(html); // Not built-in FonetDriver driver = FonetDriver.Make(); driver.Render(new StringReader(xslFo), new FileStream("webpage.pdf", FileMode.Create)); } static string ConvertHtmlToXslFo(string html) { // Custom implementation required - extremely complex throw new System.NotImplementedException(); } } $vbLabelText $csharpLabel 翻訳後(IronPDF - 組み込みサポート): // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } $vbLabelText $csharpLabel URLからPDFへのレンダリングは、このfo.net移行における最も重要な利点の1つです。 IronPdfは完全なJavaScript実行でこれをネイティブに処理します。 URLからPDFへの変換の詳細については、こちらをご覧ください。 例4: ヘッダーとフッター ビフォア(XSL-FO付きfo.net): <fo:static-content flow-name="xsl-region-before"> <fo:block text-align="center" font-size="10pt"> Company Name - Confidential </fo:block> </fo:static-content> <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="right" font-size="10pt"> Page <fo:page-number/> of <fo:page-number-citation ref-id="last-page"/> </fo:block> </fo:static-content> <fo:static-content flow-name="xsl-region-before"> <fo:block text-align="center" font-size="10pt"> Company Name - Confidential </fo:block> </fo:static-content> <fo:static-content flow-name="xsl-region-after"> <fo:block text-align="right" font-size="10pt"> Page <fo:page-number/> of <fo:page-number-citation ref-id="last-page"/> </fo:block> </fo:static-content> XML 翻訳後(IronPDF):。 renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center; font-size:10pt;'>Company Name - Confidential</div>", DrawDividerLine = true }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>", DrawDividerLine = true }; renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center; font-size:10pt;'>Company Name - Confidential</div>", DrawDividerLine = true }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right; font-size:10pt;'>Page {page} of {total-pages}</div>", DrawDividerLine = true }; $vbLabelText $csharpLabel IronPDFは複雑なXSL-FO領域定義をシンプルなHTMLヘッダーとフッターに置き換えます。 例5: PDFセキュリティ ビフォア(fo.net): // fo.net has very limited PDF security options // Must use post-processing with another library // fo.net has very limited PDF security options // Must use post-processing with another library $vbLabelText $csharpLabel 翻訳後(IronPDF):。 using IronPdf; public byte[] GenerateSecurePdf(string html) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); // Set metadata pdf.MetaData.Title = "Confidential Report"; pdf.MetaData.Author = "Company Name"; // Password protection pdf.SecuritySettings.OwnerPassword = "owner123"; pdf.SecuritySettings.UserPassword = "user456"; // Restrict permissions pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint; pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit; return pdf.BinaryData; } using IronPdf; public byte[] GenerateSecurePdf(string html) { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); // Set metadata pdf.MetaData.Title = "Confidential Report"; pdf.MetaData.Author = "Company Name"; // Password protection pdf.SecuritySettings.OwnerPassword = "owner123"; pdf.SecuritySettings.UserPassword = "user456"; // Restrict permissions pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint; pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit; return pdf.BinaryData; } $vbLabelText $csharpLabel パフォーマンスの考慮事項 ChromePdfRendererを再利用してください fo.net移行時のパフォーマンスを最適化するために、ChromePdfRendererインスタンスを再利用してください: // GOOD - Reuse the renderer public class PdfService { private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer(); public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData; } // BAD - Creating new instance each time public byte[] GenerateBad(string html) { var renderer = new ChromePdfRenderer(); // Wasteful return renderer.RenderHtmlAsPdf(html).BinaryData; } // GOOD - Reuse the renderer public class PdfService { private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer(); public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData; } // BAD - Creating new instance each time public byte[] GenerateBad(string html) { var renderer = new ChromePdfRenderer(); // Wasteful return renderer.RenderHtmlAsPdf(html).BinaryData; } $vbLabelText $csharpLabel ユニット変換ヘルパー fo.net XSL-FOはさまざまな単位を使用します。 IronPDFは余白にミリメートルを使用しています。 ヘルパークラスはこちらです: public static class UnitConverter { public static double InchesToMm(double inches) => inches * 25.4; public static double PointsToMm(double points) => points * 0.352778; public static double PicasToMm(double picas) => picas * 4.233; public static double CmToMm(double cm) => cm * 10; } // Usage renderer.RenderingOptions.MarginTop = UnitConverter.InchesToMm(1); // 1 inch public static class UnitConverter { public static double InchesToMm(double inches) => inches * 25.4; public static double PointsToMm(double points) => points * 0.352778; public static double PicasToMm(double picas) => picas * 4.233; public static double CmToMm(double cm) => cm * 10; } // Usage renderer.RenderingOptions.MarginTop = UnitConverter.InchesToMm(1); // 1 inch $vbLabelText $csharpLabel トラブルシューティング 課題1:ページサイズの違い 問題: fo.net への移行後、PDF ページ サイズが異なります。 解決策: XSL-FO ページのサイズを正しくマップします。 // XSL-FO: page-height='11in' page-width='8.5in' (Letter) renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // XSL-FO: page-height='297mm' page-width='210mm' (A4) renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; // Custom size (in mm) renderer.RenderingOptions.SetCustomPaperSize(210, 297); // XSL-FO: page-height='11in' page-width='8.5in' (Letter) renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter; // XSL-FO: page-height='297mm' page-width='210mm' (A4) renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; // Custom size (in mm) renderer.RenderingOptions.SetCustomPaperSize(210, 297); $vbLabelText $csharpLabel 課題2:fo:blockからHTMLへのマッピング 問題:何が問題なのか分からない<fo:block>なるはずです。 解決策:適切なセマンティック HTML を使用します。 見出し<h1>から<h6>まで 段落<p> 一般的なコンテナ<div>のようにします。 インラインテキスト<span> 問題3:フォントが一致しない 問題:フォントが fo.net 出力と異なります。 解決策: Web フォントを使用するか、CSS でシステム フォントを指定します。 <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', Arial, sans-serif; } </style> <style> @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); body { font-family: 'Roboto', Arial, sans-serif; } </style> HTML 課題4:ページ番号が機能しない 問題:<fo:page-number/>動作しません。 解決策:ヘッダー/フッターにIronPDFプレースホルダーを使用します。 renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>", MaxHeight = 15 // mm }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>", MaxHeight = 15 // mm }; $vbLabelText $csharpLabel 移行チェックリスト 移行前 すべての XSL-FO テンプレート ファイル ( .fo 、 .xslfo ) をカタログ化します。 文書ページの寸法と使用される余白 ヘッダー/フッターの設定( fo:static-content ) 表の構造とスタイルを識別する バージョン管理にプロジェクトをバックアップする IronPDFライセンスキーを取得する パッケージの移行 FonetまたはFO.NETパッケージを削除します: dotnet remove package Fonet IronPdfパッケージをインストールします: dotnet add package IronPdf FonetからIronPdfへの名前空間のインポートを更新 起動時にIronPDFライセンスキーを設定する コードの移行 FonetDriver.Make()をnew ChromePdfRenderer()に置き換えます driver.Render()をrenderer.RenderHtmlAsPdf()に置き換えます ストリームからのファイル出力をpdf.SaveAs()に更新します エラーイベントハンドラをtry/catchに置き換える fo:static-contentをHtmlHeaderFooterに変換する 交換する<fo:page-number/>``{page}プレースホルダー付き テスティング 出力の外観を元のfo.net PDFと比較する ページのサイズと余白を確認する ヘッダーとフッターを確認する ページ番号を検証する テストテーブルのレンダリング 画像の読み込みを確認する 移行後 .foおよび.xslfoテンプレートファイルを削除します fo.net関連のコードとユーティリティを削除する ドキュメントの更新 リファレンスを参照してください。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む Foxit PDF SDKからIronPdfへの移行:(.NET ガイド)ABCpdf for .NETからIronPDFへの... 試用版の IronPDF を無料でお試しください 5分でセットアップ完了 Install with NuGet バージョン: 2026.2 Install-Package IronPdf nuget.org/packages/IronPdf/ ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択 ブラウズを選択し、"IronPDF"を検索 パッケージを選択してインストール DLLをダウンロード バージョン: 2026.2 今すぐダウンロード またはここからWindowsインストーラーをダウンロードする。 IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択 ライセンスは$749から 15 1000 1 Now you've installed with Nuget ブラウザがダウンロード中です IronPDF Next step: Start free 30-day Trial 無料で始める ライブ環境でテスト完全機能の製品24/5 テクニカルサポート あなたの無料30日間の試用キーをすぐに入手。 Thank you.If you'd like to speak to our licensing team: トライアルフォームが正常に送信されました。試用キーはメールに届いているはずです。もし届いていない場合はsupport@ironsoftware.comにご連絡ください。 ライセンスはより安く 質問がありますか? 開発チームにお問い合わせください。 クレジットカードやアカウントの作成は不要です。 15 1000 1 Now you've installed with Nuget ブラウザがダウンロード中です IronPDF Next step: Start free 30-day Trial 無料で始める ライブ環境でテスト完全機能の製品24/5 テクニカルサポート ありがとうございます。ライセンスオプションを見る: Thank you.If you'd like to speak to our licensing team: ライセンスの表示 ライセンスはより安く 質問がありますか? ライセンスの表示 開発チームと。 質問がありますか? 開発チームにお問い合わせください。 無料で始めましょう 無料で始める ライブ環境でテストする ウォーターマークなしで本番環境でテスト。必要な場所で動作します。 . 完全機能の製品 完全に機能する製品を30日間利用できます。数分でセットアップして稼働します。 . 24/5 技術サポート 製品試用期間中、サポートエンジニアリングチームへのフルアクセス 無料で始めましょう トライアルフォームが正常に送信されました。 無料ライブデモを予約 連絡なし、カード情報なし、コミットメントなし 30分の個人デモを予約する。 Here's what to expect: 製品とその主要機能のライブデモをご覧いただけます。 . NuGetでインストール . あなたが必要なすべての情報を持っていることを確認するために、すべての質問にお答えします。(コミットメントは一切ありません)。 . 無料ライブデモを予約 ご予約が完了しました 確認のメールをご確認ください. Online 24/5 お困りですか 弊社の営業チームが喜んでお手伝いいたします。 無料の30日間トライアルキーをすぐに入手してください。 クレジットカードやアカウントの作成は不要です。 無料の30日間トライアルキーをすぐに入手してください。 クレジットカードやアカウントの作成は不要です。 無料の30日間トライアルキーをすぐに入手してください。 トライアルを開始していただき、ありがとうございます。 トライアルライセンスキーについては、メールをご確認ください。メールが届かない場合は、ライブチャットを開始するか、support@ironsoftware.com にメールしてください。 購入の準備ができていませんか? ライセンスの表示 IronPdfを試した数百万人のエンジニアに加わろう 営業チームと話す 義務のない相談を予約 私たちがお手伝いできること: お客様のワークフローや課題についてご相談いただけます。他の企業が.NETドキュメントニーズをどのように解決しているかを確認するあなたが必要な情報を確実に提供するためすべての質問に回答します。(いかなるコミットメントもありません。)プロジェクトのニーズに合わせた見積もりを取得する 義務のない相談を受ける 下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。 あなたの詳細は常に守秘されます。 世界中の数百万人のエンジニアから信頼されています。 無料ライブデモを予約 30分間の個別デモを予約してください。 契約なし、カード詳細なし、コミットメントなし。 Here's what to expect: 製品とその主要機能のライブデモをご覧いただけます。NuGetでインストールすべての質問に答え、必要な情報がすべて揃っていることを確認します。(まったく何の義務もありません。) 時間を選択 あなたの情報 無料のライブデモを予約する 世界中の数百万人のエンジニアから信頼されています。
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む