移行ガイド C#でCraftMyPDFからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る なぜCraftMyPDFからIronPDFに移行するのですか? CraftMyPDFのようなクラウドベースのPDF APIは、多くの本番環境には適さない基本的な問題があります。 クラウドベースのPDF APIの問題点 1.データがシステムから送信されます:すべての HTML テンプレートと JSON データ ペイロードはCraftMyPDFのサーバーに送信されます。 請求書、契約書、医療記録、または機密性の高いビジネスデータについては、HIPAA、GDPR、SOC2 コンプライアンスのリスクが生じます。 2.ネットワーク遅延:CraftMyPDFのドキュメントには、PDF ごとに 1.5 ~ 30 秒と記載されています。 IronPdfはミリ秒単位でローカルに生成します。 PDF ごとのコストが加算されます:サブスクリプション料金で 1 か月あたり 10,000 枚の PDF を使用すると、1 回限りの永久ライセンスと比べて、継続的に多額のコストが発生します。 4.印刷に最適化された出力:クラウド API は多くの場合、印刷用に最適化されています。つまり、背景を減らし、色を簡素化して"インク"を節約します。その結果、画面上の HTML とはまったく異なる外観になります。 5.テンプレートのロックイン:CraftMyPDFには、独自のドラッグ アンド ドロップ エディターが必要です。 標準的なHTML/CSSを自由に使用することはできません。 アーキテクチャの比較 アスペクト CraftMyPDF IronPDF データロケーション クラウド オンプレミス(データが外に出ることはありません) レイテンシーについて 1.PDF1枚あたり5~30秒 ミリ秒 価格について PDFごとの購読 1回限りの永久ライセンス テンプレートシステム 独自のドラッグ&ドロップのみ あらゆるHTML/CSS/JavaScript アウトプット品質 印刷に最適化 ピクセルパーフェクトな画面レンダリング オフラインで動作します。 いいえ(インターネットが必要です) はい コンプライアンス。 データリースの構成 SOC2/HIPAAフレンドリー 機能比較 フィーチャー CraftMyPDF IronPDF HTMLからPDFへ APIテンプレート経由 ネイティブ URLからPDFへ API経由 ネイティブ カスタムテンプレート 専用エディタのみ あらゆるHTML CSS3のサポート 制限的 フル JavaScriptレンダリング 制限的 フル PDFのマージ/分割 API経由 ネイティブ 透かし API経由 ネイティブ オフラインでの作業 ❌ ✅ セルフホスト ❌ ✅ 移行前の準備 前提条件 あなたの環境がこれらの要件を満たしていることを確認してください: .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9 Visual Studio 2019+またはC#拡張機能付きVS Code NuGetパッケージマネージャへのアクセス IronPDFライセンスキー (ironpdf.com にて無料トライアル可能) CraftMyPDFの使用状況を確認する ソリューションディレクトリで以下のコマンドを実行し、すべてのCraftMyPDFの参照を確認してください: # Find allCraftMyPDFusages in your codebase grep -r "CraftMyPdf\|craftmypdf\|api.craftmypdf.com" --include="*.cs" . grep -r "X-API-KEY" --include="*.cs" . # Find API key references grep -r "your-api-key\|template-id\|template_id" --include="*.cs" . # Find NuGet package references grep -r "CraftMyPdf\|RestSharp" --include="*.csproj" . # Find allCraftMyPDFusages in your codebase grep -r "CraftMyPdf\|craftmypdf\|api.craftmypdf.com" --include="*.cs" . grep -r "X-API-KEY" --include="*.cs" . # Find API key references grep -r "your-api-key\|template-id\|template_id" --include="*.cs" . # Find NuGet package references grep -r "CraftMyPdf\|RestSharp" --include="*.csproj" . SHELL 予想される画期的な変更 変更 CraftMyPDF IronPDF インパクト アーキテクチャ クラウド REST API ローカル.NETライブラリ HTTPコールの削除 テンプレート 独自のエディタ 標準HTML テンプレートをHTMLに変換 APIキー。 すべての通話に必要 起動時のライセンス APIキーハンドリングの削除 非同期パターン 必須 (HTTP) オプション ご希望であれば、awaitを削除してください。 エラー処理。 HTTPステータスコード 例外 try/catchパターンの変更 データバインディング。 JSONテンプレート 文字列の補間 データバインディングの簡素化 ステップごとの移行プロセス ステップ 1: NuGet パッケージを更新する HTTPクライアントライブラリを削除し、IronPDFをインストールしてください: # Remove RestSharp HTTP client dotnet remove package RestSharp # Install IronPDF dotnet add package IronPdf # Remove RestSharp HTTP client dotnet remove package RestSharp # Install IronPDF dotnet add package IronPdf SHELL ステップ 2: 名前空間参照の更新 HTTPクライアントの名前空間をIronPDFに置き換えてください: // Remove these using RestSharp; using System.IO; // Add this using IronPdf; // Remove these using RestSharp; using System.IO; // Add this using IronPdf; $vbLabelText $csharpLabel ステップ 3: ライセンスを設定する (起動時に 1 回) リクエストごとのAPIキーヘッダを単一のライセンス構成に置き換える: // Add at application startup (Program.cs or Global.asax) // This replaces all X-API-KEY headers IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup (Program.cs or Global.asax) // This replaces all X-API-KEY headers IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 完全な API 移行のリファレンス APIエンドポイントのマッピング CraftMyPDF IronPDF ノート POST /v1/create. renderer.RenderHtmlAsPdf(html). APIコール不要 X-API-KEYヘッダー License.LicenseKey = "...". 起動時に一度だけ設定 テンプレートID 標準HTML文字列 任意のHTML {%name%}プレースホルダ $"{name}" C#補間 .NET 標準 POST /v1/merge PdfDocument.Merge(pdfs). ローカル、インスタント POST /v1/add-watermark pdf.ApplyWatermark(html). HTMLベース Webhookコールバック 不要 結果は同期 料金制限 該当なし 制限なし コンフィギュレーション マッピング CraftMyPDF オプション IronPDF 同等物 ノート テンプレートID HTML文字列 独自のHTMLを使用 データ</code> JSON|C#補間|$"こんにちは {名前}"`。 page_size:"A4" PaperSize = PdfPaperSize.A4. オリエンテーション:"ランドスケープ" 用紙の向き = 横。 margin_top: 20 マージントップ = 20 単位:ミリメートル ヘッダー|HtmlHeader` HTMLフルサポート フッター HtmlFooter HTMLフルサポート コード移行の例 HTMLからPDFへの変換 最も一般的な操作は、クラウドAPIからローカルレンダリングへの基本的なアーキテクチャの移行を示しています。 CraftMyPDFの実装: // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { html = "<h1>Hello World</h1><p>This is a PDF from HTML</p>" } }); var response = client.Execute(request); File.WriteAllBytes("output.pdf", response.RawBytes); } } // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { html = "<h1>Hello World</h1><p>This is a PDF from HTML</p>" } }); var response = client.Execute(request); File.WriteAllBytes("output.pdf", response.RawBytes); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using System; using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>"); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using System; using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>"); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel IronPDFはRestClientのセットアップ、APIキーヘッダ、テンプレートID、HTTPレスポンスハンドリングを排除し、15行のクラウド操作を4行のローカルコードに削減します。 その他のオプションについては、HTML to PDF documentationを参照してください。 URLからPDFへの変換 CraftMyPDFの実装: // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { url = "https://example.com" }, export_type = "pdf" }); var response = client.Execute(request); File.WriteAllBytes("webpage.pdf", response.RawBytes); } } // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { url = "https://example.com" }, export_type = "pdf" }); var response = client.Execute(request); File.WriteAllBytes("webpage.pdf", response.RawBytes); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using System; 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 System; using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } $vbLabelText $csharpLabel IronPDFのRenderUrlAsPdfメソッドはJavaScriptでレンダリングされたコンテンツを含む完全なウェブページをキャプチャします。 その他のオプションについては、URL to PDF documentationを参照してください。 ヘッダーとフッター CraftMyPDFの実装: // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { html = "<h1>Document Content</h1>", header = "<div>Page Header</div>", footer = "<div>Page {page} of {total_pages}</div>" } }); var response = client.Execute(request); File.WriteAllBytes("document.pdf", response.RawBytes); } } // NuGet: Install-Package RestSharp using System; using RestSharp; using System.IO; class Program { static void Main() { var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); request.AddJsonBody(new { template_id = "your-template-id", data = new { html = "<h1>Document Content</h1>", header = "<div>Page Header</div>", footer = "<div>Page {page} of {total_pages}</div>" } }); var response = client.Execute(request); File.WriteAllBytes("document.pdf", response.RawBytes); } } $vbLabelText $csharpLabel IronPDFの実装:。 // NuGet: Install-Package IronPdf using System; using IronPdf; using IronPdf.Rendering; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Page Header" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "Page {page} of {total-pages}" }; var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>"); pdf.SaveAs("document.pdf"); } } // NuGet: Install-Package IronPdf using System; using IronPdf; using IronPdf.Rendering; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Page Header" }; renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "Page {page} of {total-pages}" }; var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>"); pdf.SaveAs("document.pdf"); } } $vbLabelText $csharpLabel IronPDFは{page}や{total-pages}のようなプレースホルダートークンをサポートしています。 その他のオプションについては、headers and footers documentationを参照してください。 テンプレート変数の変換 CraftMyPDFは独自のテンプレートプレースホルダーを使用しているため、C#の文字列補間に変換する必要があります: CraftMyPDFパターン: //CraftMyPDFtemplate variables request.AddJsonBody(new { template_id = "invoice-template", data = new { customer = "John Doe", amount = "$1,000", items = invoiceItems } }); //CraftMyPDFtemplate variables request.AddJsonBody(new { template_id = "invoice-template", data = new { customer = "John Doe", amount = "$1,000", items = invoiceItems } }); $vbLabelText $csharpLabel IronPDFパターン: // C# string interpolation var html = $@" <html> <body> <h1>Invoice</h1> <p>Customer: {customerName}</p> <p>Amount: {amount}</p> {GenerateItemsTable(invoiceItems)} </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(html); // C# string interpolation var html = $@" <html> <body> <h1>Invoice</h1> <p>Customer: {customerName}</p> <p>Amount: {amount}</p> {GenerateItemsTable(invoiceItems)} </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 重要な移行に関する注意事項 すべての HTTP コードを削除します 最も大きな変更点は、ネットワーク依存の排除です。 IronPDFはローカルで動作し、RestClientもAPIコールもレスポンス処理も行いません: //CraftMyPDF- HTTP required var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); var response = await client.ExecuteAsync(request); //IronPDF- no HTTP var pdf = renderer.RenderHtmlAsPdf(html); //CraftMyPDF- HTTP required var client = new RestClient("https://api.craftmypdf.com/v1/create"); var request = new RestRequest(Method.POST); request.AddHeader("X-API-KEY", "your-api-key"); var response = await client.ExecuteAsync(request); //IronPDF- no HTTP var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel レート制限コードの削除 CraftMyPDFは、再試行ロジックを必要とするAPIレート制限を課しています。 IronPDFに限界はありません: //CraftMyPDF- needed to avoid 429 errors await Task.Delay(100); if (response.StatusCode == TooManyRequests) { /* retry */ } //IronPDF- no limits, just generate var pdf = renderer.RenderHtmlAsPdf(html); // Remove all rate limit code! //CraftMyPDF- needed to avoid 429 errors await Task.Delay(100); if (response.StatusCode == TooManyRequests) { /* retry */ } //IronPDF- no limits, just generate var pdf = renderer.RenderHtmlAsPdf(html); // Remove all rate limit code! $vbLabelText $csharpLabel Webhookハンドラの削除 CraftMyPDFはPDFの補完に非同期ウェブフックを使用しています。 IronPdfは同期的であり、PDFはすぐに準備できます: //CraftMyPDF- webhook callback required // POST with webhook_url, wait for callback //IronPDF- PDF ready immediately var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // No callback needed! //CraftMyPDF- webhook callback required // POST with webhook_url, wait for callback //IronPDF- PDF ready immediately var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // No callback needed! $vbLabelText $csharpLabel デフォルトで同期 async/awaitパターンがHTTP呼び出しにのみ必要な場合は、削除してください: //CraftMyPDF- async required var response = await client.ExecuteAsync(request); //IronPDF- sync by default (async available if needed) var pdf = renderer.RenderHtmlAsPdf(html); //CraftMyPDF- async required var response = await client.ExecuteAsync(request); //IronPDF- sync by default (async available if needed) var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 移行後のチェックリスト コードの移行が完了したら、以下を確認してください: すべてのPDF生成テストを実行する 出力品質を比較する(IronPDFのChromiumエンジンはピクセルパーフェクトにレンダリングします) パフォーマンスの改善を測定(ミリ秒対秒) すべてのテンプレートが正しく変換されていることを確認する レート制限なしでバッチ処理をテストする すべてのターゲット環境でテストする CI/CDパイプラインを更新する CraftMyPDFのサブスクリプションをキャンセルする secrets/config から API キーを削除する PDFインフラストラクチャの将来性を確保する .NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、ローカルPDFライブラリを選択することで、クラウドAPIの廃止リスクやバージョン互換性の懸念を排除することができます。 IronPDFの永久ライセンスモデルは、プロジェクトが2025年や2026年まで延長されても、定期的なサブスクリプションコストやデータがインフラから離れることなく、移行への投資が無期限に配当されることを意味します。 その他のリソース IronPDFドキュメント. HTMLからPDFへのチュートリアル。 APIリファレンス. NuGetパッケージ。 ライセンスオプション。 CraftMyPDFからIronPDFに移行することで、クラウド依存性、ネットワーク遅延、PDFごとのコスト、テンプレートのロックインを排除し、オフラインで動作するピクセルパーフェクトなChromiumレンダリングを実現します。REST API呼び出しからローカルメソッド呼び出しへの移行により、コードベースが簡素化され、機密性の高いドキュメントデータをインフラ内に保持できます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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#でDinkToPdfからIronPdfに移行する方法C#でComPDFKitから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む