IRONSOFTWAREHOME
ビデオ

How to Export PDF UA Format Documents in C#

Curtis Chau
Curtis Chau
Updated: 2026年5月18日

BCL Technologies、easyPDF SDKの元発行者は、2020年3月にApryse(以前のPDFTron)によって買収され、製品は現在Apryse PDF SDKと並んでレガシーSDKとして位置付けられています。 SDK自体は、最新の開発環境でデプロイとメンテナンスの課題を生むいくつかのレガシーテクノロジーに依存しています。

よくあるイージーPDF SDKデプロイメントの問題

開発者は、Easy PDF SDKを使用する際に、このような問題に頻繁に遭遇します:

  • bcl.easypdf.interop.easypdfprinter.dll error loading
  • COM object that has been separated from its underlying RCW cannot be used
  • Timeout expired waiting for print job to complete
  • The printer operation failed because the service is not running
  • Error: Access denied(対話型セッションが必要です)
  • Cannot find printer: BCL easyPDF Printer

これらのエラーは通常、Easy PDF SDKのアーキテクチャに起因し、仮想プリンタードライバー、COMインターフェイス、および現代のサーバー環境で再現が難しいインタラクティブなWindowsセッションに依存しています。

Easy PDF SDKとIronPDFの比較:主な違い

フィーチャーイージーPDF SDKIronPDF
プラットフォームWindowsのみWindows、Linux、macOS、Docker
オフィス依存必須None
分布MSIインストーラ + 手動DLLリファレンス(NuGetパッケージなし)NuGet パッケージ (IronPdf)
インストールMSI + 仮想プリンタードライバー + COM登録NuGetパッケージ
サーバーサポート通常はインタラクティブなWindowsセッションが必要ヘッドレスで動作
HTMLレンダリング基本(オフィスベース)フルChromium(CSS3、JS)
.NETサポート.NET Core限定.NET Framework 4.6.2以降および.NET 5/6/7/8/9
非同期パターンコールバックベースネイティブasync/await
コンテナサポートベンダーによってサポートされていません完全なDocker/Kubernetes

プラットフォームの制限

Easy PDF SDKはWindowsを対象とし、Office文書の変換にMicrosoft Officeのインストールに依存するため、Linux、macOS、Dockerのようなコンテナ化された環境での使用が制限されます。 この依存関係は、サーバーセットアップをより複雑にする傾向があり、Windowsへのデプロイを制限します—マルチプラットフォームのDevOpsを実践しているチームやLinuxコンテナに依存するチームにとって制約です。

移行前の準備

前提条件

あなたの環境がこれらの要件を満たしていることを確認してください:

  • .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+またはC#拡張機能付きVS Code
  • NuGetパッケージマネージャへのアクセス
  • IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)

かんたんPDF SDKの使用法

ソリューションディレクトリでこれらのコマンドを実行し、すべての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" .
SHELL

予想される画期的な変更

Easy PDF SDKパターン必要な変更
new Printer()ChromePdfRenderer を使用してください
PrintOfficeDocToPDF()Officeの変換は別扱い
RenderHTMLToPDF()RenderHtmlAsPdf()
COM相互運用リファレンス完全に削除
プリンタドライバの設定不要
BeginPrintToFile() コールバックネイティブasync/await
インタラクティブセッションの要件ヘッドレスで動作
1ベースのページインデックス0ベースのインデックス
タイムアウト(秒タイムアウト(ミリ秒

ステップごとの移行プロセス

ステップ1:Easy PDF SDKを削除する

Easy PDF SDKはNuGetパッケージではなくMSIインストーラーとして配布され、プロジェクトは通常、そのアセンブリ(.NET Framework用のBCL.easyPDF.PDFConverter.dllや.NET Core用のBCL.easyPDF.PDFConverter.NetCore.dllなど)を直接参照します。 すべての参照を削除してください:

1.プログラムと機能からBCL EasyPDF SDKをアンインストールする 2. .csproj からDLL <Reference> エントリーを削除してください 3.COMインターオプ参照を削除 4.GACエントリが存在する場合は、クリーンアップ

ステップ2: IronPDFをインストールする

# Install IronPDF
dotnet add package IronPdf
SHELL

またはパッケージマネージャーコンソールから:

PM > Install-Package IronPdf

ステップ 3: 名前空間参照の更新

Easy PDF SDKの名前空間をIronPDFに置き換えてください:

// Remove these
using BCL.easyPDF;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.PDFProcessor;
using BCL.easyPDF.Printer;

// Add these
using IronPdf;
using IronPdf.Rendering;

完全な API 移行のリファレンス

コア クラス マッピング

Easy PDF SDKクラスIronPDF 同等物
PrinterChromePdfRenderer
PDFDocumentPdfDocument
HTMLConverterChromePdfRenderer
PrinterConfigurationChromePdfRenderOptions
PageOrientationPdfPaperOrientation
PageSizePdfPaperSize
SecurityHandlerPdfDocument.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.RemovePages(index)
doc.GetPageCount()pdf.PageCount
doc.Save(path)pdf.SaveAs(path)
doc.Close()pdf.Dispose() または using
doc.ExtractText()pdf.ExtractAllText()

設定オプション

簡単PDF SDKオプションIronPDF オプション
config.TimeOutRenderingOptions.Timeout
config.PageOrientation = LandscapeRenderingOptions.PaperOrientation = Landscape
config.PageSize = A4RenderingOptions.PaperSize = PdfPaperSize.A4
config.MarginTop/Bottom/Left/RightRenderingOptions.MarginTop、など。

コード移行の例

HTML文字列をPDFに変換

簡単なPDF SDKの実装:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
    }
}

IronPDFの実装:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}

IronPDFはHTMLレンダリングを1つのレンダラーコールにまとめ、Close()パターンを取り除きます。

URLからPDFへの変換

簡単なPDF SDKの実装:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
    }
}

IronPDFの実装:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

複数のPDFをマージする

簡単なPDF SDKの実装:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
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();
    }
}

IronPDFの実装:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}

IronPDFの静的な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");

ヘッダーとフッター

Easy PDF SDKは、そのHTML変換パスにおいて、ヘッダー/フッター用の専用APIを公開していません; ヘッダーとフッターは通常、ソース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");

その他のオプションについては、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();

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");
    }
}

重要な移行に関する注意事項

ページ索引の変更

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はタイムアウト値に秒を使用します。 IronPDFはミリ秒を使用しています:

// 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.BinaryData, "application/pdf", "report.pdf");
    }
}

Dockerの展開

Easy PDF SDKはLinuxコンテナ用に設計されておらず、サポートされる構成はWindowsとMicrosoft Office、仮想プリンタードライバー、および(ほとんどのセットアップにおいて)インタラクティブデスクトップセッションであり、通常のLinuxベースのDockerワークフローには不適当です。

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"]
Text

よくある移行の問題のトラブルシューティング

問題です:プリンタが見つかりません

症状: Cannot find printer: BCL easyPDF Printer

ソリューション: IronPDFはプリンタドライバを必要としません:

// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var 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);

問題背景が印刷されない

症状: CSSの背景が欠けている。

**解決策:**バックグラウンド印刷を有効にする:

renderer.RenderingOptions.PrintHtmlBackgrounds = true;

移行後のチェックリスト

コードの移行が完了したら、以下を確認してください:

  • IronPDFのChromiumエンジンでPDF出力の品質を検証
  • 複雑な HTML/CSS を含むすべてのエッジケースをテストします
  • 対話型セッションなしでサーバーの展開が機能することを検証する
  • Docker/コンテナのデプロイメントをテストする
  • デプロイメントから BCL EasyPDF インストーラーを削除します
  • サーバーから Office のインストールを削除します (不要になりました)
  • 新しいNuGetパッケージで CI/CD パイプラインを更新する

その他のリソース


Easy PDF SDKからIronPDFへの移行により、仮想プリンタードライバー、COMインターフェイス、およびPDF生成パスからWindowsのみの制約が除去されます。 Chromiumベースのレンダリングは、最新のCSS3およびJavaScriptのサポートを提供し、同じコードベースがDocker、Kubernetes、およびLinuxベースのクラウド環境で実行されるため、easyPDF SDKのサポートされるデプロイメントモデルをターゲットにするのが難しいものです。

ご注意: BCL easyPDF SDK、Easy PDF SDK、およびApryseは、それぞれの所有者の登録商標です。 このサイトは、BCL TechnologiesまたはApryseによって支持、承認、後援されるものではありません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。