移行ガイド C#でExpertPdfからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る ExpertPdfは、.NET用の商用HTML-PDFコンバータで、長年にわたり開発者にサービスを提供してきました。 しかし、ExpertPdfは、2018年以降凍結されたドキュメント、最新のCSS3機能を欠くレガシーなChromeバージョンへの依存、時代遅れのテクノロジーに対する550~1,200ドルのプレミアム価格、マージ、セキュリティ、分割のために個別のライセンスを必要とする断片的な製品群など、急速に進化する今日の開発環境において大きな課題に直面しています。 この包括的なガイドでは、ExpertPdfから最新のChromiumレンダリング、毎月のアップデート、オールインワンのパッケージアーキテクチャを持つ最新の.NET PDFライブラリであるIronPDFへの移行パスをステップバイステップで提供します。 なぜExpertPdfからIronPDFに移行するのですか? ExpertPdfには、開発チームを最新の代替ツールの評価に駆り立てるいくつかの課題があります。 これらの問題を理解することは、移行戦略を計画する上で不可欠です。 ExpertPdfの問題点 2018 年以降ドキュメントが凍結されています:エキスパートPDFのドキュメントは 6 年以上更新されていません。 .NETエコシステムの進化に伴い、最新の情報、例、ベストプラクティスを見つけることはますます難しくなっています。 2.古い Chrome バージョン:エキスパートPDFはレンダリングに Chrome の旧バージョンに依存しています。 最新のCSS3機能(Flexbox、Grid、CSS Variables)は正しくレンダリングされない可能性があり、セキュリティパッチは適用されません。 3.レガシー技術のプレミアム価格設定:エキスパートPDFは、ライセンスあたり 550 ~ 1,200 ドルというプレミアム価格を請求しながら、時代遅れのレンダリング技術を提供しています。 4.断片化された製品スイート:エキスパートPDFは、HtmlToPdf Converter、PDF Merger、PDF Security、PDF Splitter、PDF to Image など、さまざまな機能ごとに個別のパッケージを販売しており、それぞれに個別のライセンスが必要です。 5.最新の .NET サポートが限られている:エキスパートPDFには .NET Core パッケージがありますが、最新の .NET バージョンとプラクティスに遅れをとっています。 アーキテクチャの比較 アスペクト エキスパートPDF IronPDF ドキュメント 2018年より凍結 継続的な更新 レンダリングエンジン レガシーChrome 最新のChromium CSSサポート 限定的なCSS3 フルCSS3(フレックスボックス、グリッド) 価格 $550-$1,200 競争力のある価格設定 更新頻度 頻度 毎月のリリース 製品モデル 断片化(5つ以上のDLL) オールインワンライブラリ モダン.NET 制限的 .NET 6/7/8/9+ ネイティブ 非同期サポートについて 制限的 完全なasync/await 主な移行のメリット 1.モダンレンダリング:ピクセルパーフェクトな出力を実現する最新のChromiumエンジン 2.オールインワンパッケージ: PDF生成、マージ、セキュリティ、抽出を1つのNuGetで実現 3.積極的な開発:新機能とセキュリティパッチを含む毎月のアップデート 4.より良いドキュメント:包括的なチュートリアルと例 5.真のクロスプラットフォーム: Windows、Linux、macOS、Docker をサポート 移行前の準備 前提条件 あなたの環境がこれらの要件を満たしていることを確認してください: .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 Visual Studio 2019+またはC#拡張機能付きVS Code NuGetパッケージマネージャへのアクセス IronPDFライセンスキー (ironpdf.com にて無料トライアル可能) 監査エキスパートPDFの使用法 ソリューションディレクトリで以下のコマンドを実行し、ExpertPdfへの参照をすべて特定します: # Find allエキスパートPDFreferences grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "ExpertPdf" # Find allエキスパートPDFreferences grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "ExpertPdf" SHELL 一般的なExpertPdfパッケージ `ExpertPdf.HtmlToPdf - HTMLからPDFへの変換 ExpertPdf.PDFMerge - PDFマージ ExpertPdf.PDFSecurity - 暗号化とパスワード ExpertPdf.PDFSplit - PDF分割 ExpertPdf.PdfToImage - PDFから画像への変換 コアパターンの変更を理解する ExpertPdfは、バイト配列を直接返すメソッドを持つPdfConverterを使用しています。 IronPDFはChromePdfRendererを使用し、保存する前に追加の操作機能を提供するPdfDocumentオブジェクトを返します。 ステップごとの移行プロセス ステップ 1: NuGet パッケージを更新する すべてのExpertPdfパッケージを削除し、IronPdfをインストールしてください: # Remove allエキスパートPDFpackages dotnet remove package ExpertPdf.HtmlToPdf dotnet remove package ExpertPdf.PDFMerge dotnet remove package ExpertPdf.PDFSecurity dotnet remove package ExpertPdf.PDFSplit dotnet remove package ExpertPdf.PdfToImage # InstallIronPDF(includes all features) dotnet add package IronPdf # Remove allエキスパートPDFpackages dotnet remove package ExpertPdf.HtmlToPdf dotnet remove package ExpertPdf.PDFMerge dotnet remove package ExpertPdf.PDFSecurity dotnet remove package ExpertPdf.PDFSplit dotnet remove package ExpertPdf.PdfToImage # InstallIronPDF(includes all features) dotnet add package IronPdf SHELL ステップ 2: 名前空間参照の更新 ExpertPdfの名前空間をIronPdfに置き換えてください: // Remove these using ExpertPdf.HtmlToPdf; // Add this using IronPdf; // Remove these using ExpertPdf.HtmlToPdf; // Add this using IronPdf; $vbLabelText $csharpLabel ステップ 3: ライセンスの設定 ExpertPdfは、コンバータごとのライセンスを使用しています。 IronPDFは単一のグローバルライセンスを使用しています: // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 完全な API 移行のリファレンス コア クラス マッピング ExpertPdfクラス IronPDF 同等物 ノート PdfConverter|ChromePdfRenderer` 主な変換クラス PdfDocumentOptions ChromePdfRenderOptions RenderingOptions経由 PdfHeaderOptions TextHeaderFooterまたはHtmlHeaderFooter。 設定可能 PdfFooterOptions TextHeaderFooterまたはHtmlHeaderFooter。 設定可能 PDFMerge PdfDocument.Merge()を使用してください。 静的メソッド メソッドマッピング ExpertPdf メソッド IronPDF メソッド ノート pdfConverter.GetPdfBytesFromHtmlString(html). renderer.RenderHtmlAsPdf(html).BinaryData。 pdfConverter.GetPdfBytesFromUrl(url). renderer.RenderUrlAsPdf(url).BinaryData。 pdfConverter.GetPdfBytesFromHtmlFile(パス)。 renderer.RenderHtmlFileAsPdf(path).BinaryData。 pdfConverter.SavePdfFromUrlToFile(url, path). renderer.RenderUrlAsPdf(url).SaveAs(path)を実行します。 2ステップ オプション マッピング ExpertPdf オプション IronPDF レンダリングオプション ノート PdfDocumentOptions.PdfPageSize=PdfPageSize.A4。 PaperSize = PdfPaperSize.A4. PdfDocumentOptions.PdfPageOrientation=Portrait。 PaperOrientation = PdfPaperOrientation.Portrait です。 PdfDocumentOptions.MarginTop。 マージントップ 同じプロパティ名 PdfHeaderOptions.HeaderText TextHeader.CenterText PdfFooterOptions.FooterText TextFooter.RightText ページ番号トークン変換 ExpertPdfとIronPDFはページ番号に異なるプレースホルダー構文を使用します: エキスパートPDF IronPDF &p; {ページ} &P; {総ページ数} コード移行の例 HTMLからPDFへの変換 基本的なHTMLからPDFへの変換は、ExpertPdfのバイトアレイパターンからIronPDFのドキュメントオブジェクトアプローチへの移行を示しています。 ExpertPdfの実装: // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Convert HTML string to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>"); // Save to file System.IO.File.WriteAllBytes("output.pdf", pdfBytes); Console.WriteLine("PDF created successfully!"); } } // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Convert HTML string to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>"); // Save to file System.IO.File.WriteAllBytes("output.pdf", pdfBytes); Console.WriteLine("PDF created successfully!"); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from HTML string var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>"); // Save to file pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from HTML string var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>"); // Save to file pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } $vbLabelText $csharpLabel IronPDFのアプローチはPdfDocumentオブジェクトを返し、保存する前に追加操作(マージ、透かし、セキュリティ)を可能にします。 その他のオプションについては、HTML to PDF documentationを参照してください。 ページ設定付きURL to PDF ExpertPdfの実装: // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Set page size and orientation pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4; pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait; // Convert URL to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com"); // Save to file System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes); Console.WriteLine("PDF from URL created successfully!"); } } // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Set page size and orientation pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4; pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait; // Convert URL to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com"); // Save to file System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes); Console.WriteLine("PDF from URL created successfully!"); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Set page size and orientation renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait; // Convert URL to PDF var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); // Save to file pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Set page size and orientation renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait; // Convert URL to PDF var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); // Save to file pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } $vbLabelText $csharpLabel IronPDFのRenderingOptionsはページ設定のための直接的なプロパティアクセスを提供します。 その他のオプションについては、URL to PDF documentationを参照してください。 ページ番号を含むヘッダーとフッター この例では、ヘッダー/フッター設定の決定的な違いを示しています。ExpertPDFは&p;/&P;トークンを持つ別々のPdfHeaderOptions</code>と<code>PdfFooterOptions</code>クラスを使用し、IronPDFは<code>{page}/{total-pages}プレースホルダーを持つTextHeaderFooterを使用しています。 ExpertPdfの実装: // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Enable header pdfConverter.PdfHeaderOptions.ShowHeader = true; pdfConverter.PdfHeaderOptions.HeaderText = "Document Header"; pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center; // Enable footer with page numbers pdfConverter.PdfFooterOptions.ShowFooter = true; pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;"; pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right; // Convert HTML file to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html"); // Save to file System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes); Console.WriteLine("PDF with headers and footers created successfully!"); } } // NuGet: Install-Package ExpertPdf.HtmlToPdf using ExpertPdf.HtmlToPdf; using System; class Program { static void Main() { // Create the PDF converter PdfConverter pdfConverter = new PdfConverter(); // Enable header pdfConverter.PdfHeaderOptions.ShowHeader = true; pdfConverter.PdfHeaderOptions.HeaderText = "Document Header"; pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center; // Enable footer with page numbers pdfConverter.PdfFooterOptions.ShowFooter = true; pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;"; pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right; // Convert HTML file to PDF byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html"); // Save to file System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes); Console.WriteLine("PDF with headers and footers created successfully!"); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Configure header renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Document Header", DrawDividerLine = true }; // Configure footer with page numbers renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { RightText = "Page {page} of {total-pages}", DrawDividerLine = true }; // Convert HTML file to PDF var pdf = renderer.RenderHtmlFileAsPdf("input.html"); // Save to file pdf.SaveAs("output-with-header-footer.pdf"); Console.WriteLine("PDF with headers and footers created successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF renderer var renderer = new ChromePdfRenderer(); // Configure header renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Document Header", DrawDividerLine = true }; // Configure footer with page numbers renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { RightText = "Page {page} of {total-pages}", DrawDividerLine = true }; // Convert HTML file to PDF var pdf = renderer.RenderHtmlFileAsPdf("input.html"); // Save to file pdf.SaveAs("output-with-header-footer.pdf"); Console.WriteLine("PDF with headers and footers created successfully!"); } } $vbLabelText $csharpLabel IronPDFのTextHeaderFooterはLeftText、CenterText、RightTextプロパティとオプションの区切り線を提供します。 HTMLベースのヘッダーには、HtmlHeaderFooterを使用してください。 その他のオプションについては、headers and footers documentationを参照してください。 重要な移行に関する注意事項 ライセンス キー ロケーション ExpertPdfは、コンバータごとのライセンスを使用しています。 IronPdfは起動時に単一のグローバルライセンスを使用します: //エキスパートPDF- per converter pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"; //IronPDF- global, set once IronPdf.License.LicenseKey = "IRONPDF-LICENSE"; //エキスパートPDF- per converter pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"; //IronPDF- global, set once IronPdf.License.LicenseKey = "IRONPDF-LICENSE"; $vbLabelText $csharpLabel ページ番号トークン変換 ExpertPdfトークンをIronPDFプレースホルダーに置き換えてください: // ExpertPdf "Page &p; of &P;" // IronPDF "Page {page} of {total-pages}" // ExpertPdf "Page &p; of &P;" // IronPDF "Page {page} of {total-pages}" $vbLabelText $csharpLabel 断片化されたパッケージが統合されました ExpertPdfの個別パッケージ(PDFMerge, PDFSecurity, PDFSplit, PdfToImage)はすべてIronPdfの単一パッケージに含まれています: //エキスパートPDF- requires separate PDFMerge package var merger = new PdfMerge(); merger.AppendPDFFile("file1.pdf"); merger.AppendPDFFile("file2.pdf"); merger.SaveMergedPDFToFile("merged.pdf"); //IronPDF- included in main package var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); //エキスパートPDF- requires separate PDFMerge package var merger = new PdfMerge(); merger.AppendPDFFile("file1.pdf"); merger.AppendPDFFile("file2.pdf"); merger.SaveMergedPDFToFile("merged.pdf"); //IronPDF- included in main package var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); $vbLabelText $csharpLabel マージオプションについては、PDFマージドキュメントを参照してください。 カスタムページサイズ ExpertPdfはポイントを使用しています。 IronPDFはミリメートルを使用しています。 変換してください:ポイント / 72 * 25.4 = mm. 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: 生成されたPDFの視覚的な比較 ヘッダー/フッターとページ番号を確認する セキュリティ/暗号化設定をテストする マージ操作を検証する カスタムページサイズを確認する パフォーマンスベンチマーク クロスプラットフォームテスト ExpertPdfライセンスファイルを削除する ドキュメントの更新 PDFインフラストラクチャの将来性を確保する .NET 10が目前に迫り、C# 14では新しい言語機能が導入されるため、活発な開発と最新のレンダリングが行われているPDFライブラリを選択することで、長期的な互換性を確保することができます。 IronPdfの毎月のアップデートと最新のChromeエンジンは、ExpertPdfのレガシーなChromeバージョンとは異なり、プロジェクトが2025年や2026年に拡張されても、最新のCSS3レイアウト(Flexbox、Grid)で正しく動作し続けるPDF生成の基盤を提供します。 その他のリソース IronPDFドキュメント. HTMLからPDFへのチュートリアル。 APIリファレンス. NuGetパッケージ。 ライセンスオプション。 ExpertPdfからIronPDFに移行することで、凍結されたドキュメント、レガシーなChromeレンダリング、断片化された製品ライセンス、限定された最新の.NETサポートといった課題が解消されます。 最新のChromiumエンジンを備えたアクティブにメンテナンスされたライブラリへの移行により、PDF生成は、進化するWeb標準や.NET Frameworkと歩調を合わせることができます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でFastReportからIronPDFに移行する方法C#でEO.PdfからIronPDFに移行...
公開日 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む