C#でEasy PDF SDKからIronPDFへ移行する方法
Easy PDF SDKは、いくつかのレガシー技術に依存しており、最新の開発環境におけるデプロイとメンテナンスに大きな課題があります。
よくあるイージーPDF SDKデプロイメントの問題
開発者は、Easy PDF SDKを使用する際に、このような問題に頻繁に遭遇します:
bcl.easypdf.interop.easypdfprinter.dll error loadingCOM object that has been separated from its underlying RCW cannot be usedTimeout expired waiting for print job to completeThe printer operation failed because the service is not runningError: Access denied(対話型セッションが必要)Cannot find printer: BCL easyPDF Printer
これらのエラーは、Easy PDF SDKの基本的なアーキテクチャに起因しています。それは、仮想プリンタドライバ、COMインターオプ、およびインタラクティブなWindowsセッションを必要としますが、これらは単に最新のサーバ環境には存在しません。
Easy PDF SDKとIronPDFの比較:主な違い
| フィーチャー | イージーPDF SDK | IronPDF |
|---|---|---|
| プラットフォーム | Windowsのみ | Windows、Linux、macOS、Docker |
| オフィス依存 | 必須 | なし |
| インストール。 | 複雑なMSI + プリンタドライバ + COM | シンプルなNuGetパッケージ |
| サーバーサポート | インタラクティブなセッションが必要 | ヘッドレスで動作 |
| HTMLレンダリング。 | 基本(オフィスベース) | フルChromium(CSS3、JS) |
| .NETサポート | .NET Core限定 | 完全な.NET 5/6/7/8/9 |
| 非同期パターン | コールバックベース | ネイティブasync/await |
| コンテナサポート | 実行不可 | 完全なDocker/Kubernetes |
プラットフォームの制限
Easy PDF SDKは、変換のためにMicrosoft Officeのインストールを必要とするWindowsシステムに独占的に依存しているため、Linux、macOS、またはDockerのようなコンテナ化された環境のサポートは除外されています。 このような依存関係は、サーバーのセットアップを煩雑にし、Windows環境へのサービス導入を制限します。これは、マルチプラットフォームDevOpsを実践しているチームや、デプロイにコンテナを使用しているチームにとって大きな制約となります。
移行前の準備
前提条件
あなたの環境がこれらの要件を満たしていることを確認してください:
- .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9
- Visual Studio 2019+またはC#拡張機能付きVS Code
- NuGetパッケージマネージャへのアクセス
- IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)
かんたんPDF SDKの使用法</a
ソリューションディレクトリでこれらのコマンドを実行し、すべてのEasy PDF SDK参照を識別してください:
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .
# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .
# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .
# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
予想される画期的な変更
| Easy PDF SDKパターン | 必要な変更 |
|---|---|
new Printer() |
ChromePdfRenderer を使用してください |
PrintOfficeDocToPDF() |
Officeの変換は別扱い |
RenderHTMLToPDF() |
RenderHtmlAsPdf() |
| COM相互運用リファレンス | 完全に削除 |
| プリンタドライバの設定 | 不要 |
BeginPrintToFile() コールバック |
ネイティブasync/await |
| インタラクティブセッションの要件 | ヘッドレスで動作 |
| 1ベースのページインデックス | 0ベースのインデックス |
| タイムアウト(秒 | タイムアウト(ミリ秒 |
ステップごとの移行プロセス
ステップ1:Easy PDF SDKを削除する
Easy PDF SDKは通常、MSIインストーラ、手動DLL参照、またはGAC登録によってインストールされます。 すべての参照を削除してください:
1.プログラムと機能からBCL EasyPDF SDKをアンインストールする 2.プロジェクトからDLL参照を削除する 3.COMインターオプ参照を削除 4.GACエントリが存在する場合は、クリーンアップ
ステップ2: IronPDFをインストールする
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
またはパッケージマネージャーコンソールから:
Install-Package IronPdf
ステップ 3: 名前空間参照の更新
Easy PDF SDKの名前空間をIronPDFに置き換えてください:
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
// Remove these
using BCL.easyPDF;
using BCL.easyPDF.Interop;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.Printer;
// Add these
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
完全な API 移行のリファレンス
コア クラス マッピング
| Easy PDF SDKクラス | IronPDF 同等物 |
|---|---|
Printer |
ChromePdfRenderer |
PDFDocument |
PdfDocument |
HTMLConverter |
ChromePdfRenderer |
PrinterConfiguration |
ChromePdfRenderOptions |
PageOrientation |
PdfPaperOrientation |
PageSize |
PdfPaperSize |
SecurityHandler |
PdfDocument.SecuritySettings |
PDF作成方法
| Easy PDF SDKの方法 | IronPDF メソッド |
|---|---|
printer.RenderHTMLToPDF(html, path) |
renderer.RenderHtmlAsPdf(html).SaveAs(path) |
printer.RenderUrlToPDF(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
htmlConverter.ConvertHTML(html, doc) |
renderer.RenderHtmlAsPdf(html) |
htmlConverter.ConvertURL(url, doc) |
renderer.RenderUrlAsPdf(url) |
PDF操作方法
| Easy PDF SDKの方法 | IronPDF メソッド |
|---|---|
doc.Append(doc2) |
PdfDocument.Merge(pdf1, pdf2) |
doc.ExtractPages(start, end) |
pdf.CopyPages(start, end) |
doc.DeletePage(index) |
pdf.RemovePage(index) |
doc.GetPageCount() |
pdf.PageCount |
doc.Save(path) |
pdf.SaveAs(path) |
doc.Close() |
pdf.Dispose() または using |
doc.ExtractText() |
pdf.ExtractAllText() |
設定オプション
| 簡単PDF SDKオプション | IronPDF オプション |
|---|---|
config.TimeOut |
RenderingOptions.Timeout |
config.PageOrientation = Landscape |
RenderingOptions.PaperOrientation = Landscape |
config.PageSize = A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
config.MarginTop/Bottom/Left/Right |
RenderingOptions.MarginTop など |
コード移行の例
HTML文字列をPDFに変換
簡単なPDF SDKの実装:。
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
pdf.Save("output.pdf");
pdf.Close();
}
}
Imports BCL.EasyPDF
Imports System
Class Program
Shared Sub Main()
Dim pdf As New PDFDocument()
Dim htmlConverter As New HTMLConverter()
htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf)
pdf.Save("output.pdf")
pdf.Close()
End Sub
End Class
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF は個別の HTMLConverter クラスと手動の Close() 呼び出しを排除し、よりクリーンで保守しやすいコードを実現します。
URLからPDFへの変換
簡単なPDF SDKの実装:。
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf = new PDFDocument();
var htmlConverter = new HTMLConverter();
htmlConverter.ConvertURL("https://example.com", pdf);
pdf.Save("webpage.pdf");
pdf.Close();
}
}
Imports BCL.EasyPDF
Imports System
Module Program
Sub Main()
Dim pdf As New PDFDocument()
Dim htmlConverter As New HTMLConverter()
htmlConverter.ConvertURL("https://example.com", pdf)
pdf.Save("webpage.pdf")
pdf.Close()
End Sub
End Module
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
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;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
複数のPDFをマージする
簡単なPDF SDKの実装:。
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}
// NuGet: Install-Package BCL.EasyPDF
using BCL.EasyPDF;
using System;
class Program
{
static void Main()
{
var pdf1 = new PDFDocument("document1.pdf");
var pdf2 = new PDFDocument("document2.pdf");
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
pdf1.Close();
pdf2.Close();
}
}
Imports BCL.EasyPDF
Imports System
Module Program
Sub Main()
Dim pdf1 As New PDFDocument("document1.pdf")
Dim pdf2 As New PDFDocument("document2.pdf")
pdf1.Append(pdf2)
pdf1.Save("merged.pdf")
pdf1.Close()
pdf2.Close()
End Sub
End Module
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfs = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
};
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdfs = New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf")
}
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
End Sub
End Class
IronPDF の静的な Merge メソッドは複数のドキュメントを直接受け入れ、手動の Append ループ パターンを排除します。
パスワード保護
IronPDFの実装:。
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit
pdf.SaveAs("protected.pdf")
ヘッダーとフッター
Easy PDF SDKは、ネイティブのヘッダー/フッターサポートを持っていません-ヘッダーとフッターは、ソースHTMLに含める必要があります。 IronPDFは専用の機能を提供します:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:12px; font-family:Arial;'>
Company Name - Confidential
</div>",
.DrawDividerLine = True,
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
.DrawDividerLine = True,
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>")
pdf.SaveAs("with_headers.pdf")
その他のオプションについては、headers and footers documentationを参照してください。
現代のアプリケーションはノンブロッキングオペレーションを必要とします。
Easy PDF SDKは、コールバックベースの非同期パターンを使用します。 IronPdfはネイティブのasync/awaitをサポートしています:
簡単なPDF SDKの実装:。
using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();
using BCL.easyPDF;
Printer printer = new Printer();
// BCL uses callback-based async
printer.BeginPrintToFile(
"https://example.com",
"output.pdf",
OnPrintComplete,
OnPrintError
);
Console.ReadLine();
printer.Dispose();
Imports BCL.easyPDF
Dim printer As New Printer()
' BCL uses callback-based async
printer.BeginPrintToFile( _
"https://example.com", _
"output.pdf", _
AddressOf OnPrintComplete, _
AddressOf OnPrintError _
)
Console.ReadLine()
printer.Dispose()
IronPDFの実装:。
using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}
using IronPdf;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var renderer = new ChromePdfRenderer();
// Native async/await
var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
await pdf.SaveAsAsync("output.pdf");
Console.WriteLine("PDF created: output.pdf");
}
}
Imports IronPdf
Imports System.Threading.Tasks
Class Program
Shared Async Function Main() As Task
Dim renderer = New ChromePdfRenderer()
' Native async/await
Dim pdf = Await renderer.RenderUrlAsPdfAsync("https://example.com")
Await pdf.SaveAsAsync("output.pdf")
Console.WriteLine("PDF created: output.pdf")
End Function
End Class
重要な移行に関する注意事項
ページ索引の変更
Easy PDF SDKは1ベースのインデックスを使用します。 IronPDFは0ベースのインデックスを使用しています:
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);
// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);
// IronPDF: 0-based
pdf.CopyPages(0, 4);
' Easy PDF SDK: 1-based
doc.ExtractPages(1, 5)
' IronPDF: 0-based
pdf.CopyPages(0, 4)
タイムアウト (ミリ秒単位)
Easy PDF SDKはタイムアウト値に秒を使用します。 IronPDFはミリ秒を使用しています:
// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
// Easy PDF SDK: seconds
config.TimeOut = 120;
// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;
' Easy PDF SDK: seconds
config.TimeOut = 120
' IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000
.NETコアの統合
Easy PDF SDKは、インタラクティブなセッションが要求されるため、Webコンテキストでは苦労します。
IronPDFパターン:
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate")>
Public Function GeneratePdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
<HttpGet("generate-async")>
Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
Dim renderer = New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")
Return File(pdf.Stream, "application/pdf", "report.pdf")
End Function
End Class
Dockerの展開
Easy PDF SDKはDockerコンテナでは実行できません。Windowsコンテナ、Microsoft Office、仮想プリンタドライバ、およびインタラクティブデスクトップセッションが必要です。 これは、コンテナ化とは根本的に相容れないものです。
IronPdfのDocker設定:。
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chromium dependencies
RUN apt-get update && apt-get install -y \
libc6 libgdiplus libx11-6 libxcomposite1 \
libxdamage1 libxrandr2 libxss1 libxtst6 \
libnss3 libatk-bridge2.0-0 libgtk-3-0 \
libgbm1 libasound2 fonts-liberation \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]
よくある移行の問題のトラブルシューティング
問題です:プリンタが見つかりません
症状: Cannot find printer: BCL easyPDF Printer
ソリューション: IronPDFはプリンタドライバを必要としません:
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
課題COM 相互接続エラー
症状: DLL error loading または RCW エラー
解決策: すべてのCOM参照を削除し、IronPdfのマネージドAPIを使用してください。
課題サーバーのタイムアウト
症状: PDF生成がWebサーバー上でハングする。
ソリューション: IronPDFはインタラクティブセッションなしでヘッドレスで動作します:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.Timeout = 60000 ' Reliable timeout
Dim pdf = renderer.RenderHtmlAsPdf(html)
問題背景が印刷されない
症状: CSSの背景が欠けている。
解決策:バックグラウンド印刷を有効にする:
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.PrintHtmlBackgrounds = True
移行後のチェックリスト
コードの移行が完了したら、以下を確認してください:
- IronPDFのChromiumエンジンでPDF出力の品質を検証
- 複雑な HTML/CSS を含むすべてのエッジケースをテストします
- 対話型セッションなしでサーバーの展開が機能することを検証する
- Docker/コンテナのデプロイメントをテストする
- デプロイメントから BCL EasyPDF インストーラーを削除します
- サーバーから Office のインストールを削除します (不要になりました)
- 新しいNuGetパッケージで CI/CD パイプラインを更新する
PDFインフラストラクチャの将来性を確保する
.NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、クロスプラットフォームのPDFライブラリを選択することで、進化するデプロイメントモデルとの互換性を確保することができます。 IronPdf.Linux、Docker、クラウドネイティブアーキテクチャのサポートは、Easy PDF SDKのWindowsのみの制約を受けることなく、プロジェクトが2025年、2026年に拡張されたときに、移行への投資が報われることを意味します。
その他のリソース
Easy PDF SDKからIronPdfに移行することで、仮想プリンター依存、COMインターオプの問題、Windowsのみの制約がなくなります。 Chromiumベースのレンダリングへの移行により、優れたCSS3とJavaScriptのサポートが実現され、Easy PDF SDKのレガシーアーキテクチャでは不可能であったDocker、Kubernetes、クラウド環境へのデプロイが可能になりました。

