フッターコンテンツにスキップ
ビデオ

C# を使用して SVG を PDF に変換する方法

PDFreactorからIronPDFに移行することで、.NETネイティブライブラリを通して同等のHTMLからPDFへの変換機能を提供しながら、Java依存とサーバーインフラを排除します。 このガイドでは、Javaベースのサーバーアーキテクチャを.NETアプリケーションにシームレスに統合するインプロセスライブラリに置き換える、完全でステップバイステップの移行パスを提供します。

なぜPDFreactorからIronPDFに移行するのか

PDFreactorについて

PDFreactorは、さまざまなプラットフォームに統合された強力なHTMLからPDFへの変換サーバーです。 商用ソリューションとして、PDFreactorは独自の技術を活用し、HTMLとCSSコンテンツを高品質のPDFドキュメントに変換します。 特筆すべき属性として、PDFreactorは幅広いCSSプロパティに対応しており、複雑なレイアウトレンダリングの有力な候補となります。

しかし、PDFreactorがJavaに依存しているため、.NET環境では、その非ネイティブの性質がデプロイと統合を複雑にする可能性があるという課題があります。 Javaに依存しているため、.NETアプリケーションに余分なオーバーヘッドが発生し、追加の統合作業が必要になることがよくあります。

Javaの依存性の問題

PDFreactorのアーキテクチャは、.NET環境においていくつかの課題を生み出します:

  1. Java ランタイムが必要:すべてのサーバーに JRE/JDK がインストールされている必要があります。

2.サーバー アーキテクチャ:追加のインフラストラクチャを必要とする個別のサービスとして実行されます。 サーバーベースのソリューションとして、PDFreactorはすべての変換にREST APIコールを必要とします。

3.複雑な展開:主に.NETエコシステムで Java の依存関係を管理すると、セットアップが複雑になり、メンテナンス コストが増加する可能性があります。 CI/CDパイプラインで管理する2つのランタイム(Java + .NET)。

4.プロセス間通信: REST API またはソケット通信により遅延が発生します。 すべてのPDF変換には、サーバーへのHTTPラウンドトリップが必要です。

5.個別のライセンス管理:ライセンスはアプリケーションではなくサーバー インスタンスにバインドされます。 Javaサービスインスタンスに関連付けられたサーバーごとのライセンス。

6.リソースの分離:プロセス メモリと CPU 管理を分離します。 監視、拡張、保守のための追加サーバー。

PDFreactorとIronPDFの比較

特徴/側面 PDFreactor IronPDF
ネイティブ.NETライブラリ なし(Javaベース) はい
ランタイム Java(外部サーバー) .NET ネイティブ(進行中)
アーキテクチャ REST API サービス NuGetライブラリ
デプロイメント Java + サーバー設定 単一のNuGetパッケージ
依存関係について JRE + HTTPクライアント 自己完結型
レイテンシーについて ネットワーク往復 直接メソッド呼び出し
クロスプラットフォーム対応 可(Javaに依存) はい(バンドルされているChromium)
CSSサポート CSS3、CSS Paged Mediaの高度なサポート 包括的なHTML5/CSS3のサポート
展開の複雑さ Javaのため、より複雑 シンプル、.NETと直接統合
PDF操作の特徴 基本(生成のみ) マージ、分割、編集、注釈を含む広範囲な作業

PDFreactorとは対照的に、IronPDFはネイティブ for .NETライブラリであり、Javaのような外部依存なしに.NETプロジェクトにシームレスに統合できるように設計されています。 IronPDFはバンドルされているChromiumレンダリングエンジンを使用しており、わずか数行のコードでHTMLをPDFに変換することができます。

現代の .NET バージョンを採用しているチーム向けに、IronPDF は Java サーバーの複雑さを排除しつつ、包括的な PDF ライフサイクル管理を提供するネイティブ .NET ソリューションを提供します。


始める前に

前提条件

  1. .NET環境: .NET Framework 4.6.2+ または.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: IronPDFからライセンスキーを取得します。

NuGetパッケージの変更

#PDFreactoris NOT distributed via NuGet. The .NET wrapper ships as
# PDFreactor.dll inside <PDFreactor-install>/clients/netstandard2/bin/
# (or netframework40/bin for older .NET Framework projects).
# Remove the assembly reference from your .csproj.

# StopPDFreactorWeb Service (Java/Jetty, default port 9423)
# Windows: net stop PDFreactor
# Linux:   sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
#PDFreactoris NOT distributed via NuGet. The .NET wrapper ships as
# PDFreactor.dll inside <PDFreactor-install>/clients/netstandard2/bin/
# (or netframework40/bin for older .NET Framework projects).
# Remove the assembly reference from your .csproj.

# StopPDFreactorWeb Service (Java/Jetty, default port 9423)
# Windows: net stop PDFreactor
# Linux:   sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

PDFreactor(サーバーベース):

// License configured on thePDFreactorWeb Service via config file or command line.
// The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423/service/rest");
// License configured on thePDFreactorWeb Service via config file or command line.
// The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423/service/rest");
' License configured on thePDFreactorWeb Service via config file or command line.
' The .NET client (RealObjects.PDFreactor.Webservice.Client) connects to that licensed service.
Dim pdfReactor = New PDFreactor("http://pdfreactor-server:9423/service/rest")
$vbLabelText   $csharpLabel

IronPDF(アプリケーションレベル):

// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
$vbLabelText   $csharpLabel

PDFreactorの使用法を特定する

# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# FindCSSページングメディアrules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# FindCSSページングメディアrules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
SHELL

完全な API リファレンス

名前空間の変更

// Before:PDFreactor(Web Service client)
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before:PDFreactor(Web Service client)
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports RealObjects.PDFreactor.Webservice.Client
Imports System.IO

' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

コア クラス マッピング

PDFreactor IronPDF
PDFreactor ChromePdfRenderer
Configuration ChromePdfRenderOptions
Result PdfDocument
config.Document = html renderer.RenderHtmlAsPdf(html)
result.Document (byte[]) pdf.BinaryData

構成プロパティのマッピング

PDFreactorの構成 IronPDF レンダリングオプション
config.Document = html renderer.RenderHtmlAsPdf(html)
config.Document = url renderer.RenderUrlAsPdf(url)
config.PageFormat = PageFormat.A4 RenderingOptions.PaperSize = PdfPaperSize.A4
config.PageOrientation RenderingOptions.PaperOrientation
config.PageMargins RenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = true RenderingOptions.EnableJavaScript = true
config.UserStyleSheets = new List<Resource>{...} HTMLにCSSを埋め込む
config.Title pdf.MetaData.Title
config.Encryption pdf.SecuritySettings

PDFreactorでは利用できない新機能

IronPDFの特徴 翻訳内容
PdfDocument.Merge() 複数のPDFをマージ
pdf.ApplyWatermark() 透かしの追加
pdf.ExtractAllText() テキスト抽出
pdf.Form フォーム入力
pdf.Sign() デジタル署名

コード移行の例

例1: HTML文字列からPDFへの変換

翻訳前 (PDFreactor):

//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor.Webservice.Client
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim config As New Configuration()
        config.Document = html

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("output.pdf", result.Document)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

基本的な違いは、アーキテクチャ・パターンです。PDFreactorは、PDFreactor インスタンス(Java サーバーに接続)を作成し、設定とHTMLコンテンツを保持するための個別の Configuration オブジェクトを必要とし、Convert() を呼び出し Result オブジェクトを返し、最後に result.Document バイトを File.WriteAllBytes() を使用してファイルに書き込みます。

IronPDF はこれを簡単にし、ChromePdfRenderer を作成し、HTML文字列を直接 RenderHtmlAsPdf() に渡し、返された PdfDocument で組み込みの SaveAs() メソッドを使用します。 サーバー接続、設定オブジェクト、手動でのバイト処理はありません。 包括的な例については、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前 (PDFreactor):

//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor.Webservice.Client
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim config As New Configuration()
        config.Document = "https://www.example.com"

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("webpage.pdf", result.Document)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://www.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://www.example.com");

        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")

        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDFreactor は、HTML文字列とURLの両方に同じ config.Document プロパティを使用し、自動的にタイプを決定します。IronPDFは明示的なメソッドを提供しており、HTML文字列には RenderHtmlAsPdf()、URLには RenderUrlAsPdf() を使用します。 この明示的なアプローチにより、コードの明快さとインテリセンスのサポートが向上します。 詳しくは、チュートリアルをご覧ください。

例3:ページ番号を含むヘッダーとフッター

翻訳前 (PDFreactor):

//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.UserStyleSheets = new System.Collections.Generic.List<Resource>
        {
            new Resource { Content = "@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }" }
        };

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
//PDFreactor.NET wrapper is a Web Service client (no NuGet package).
// Reference PDFreactor.dll from <PDFreactor-install>/clients/netstandard2/bin/
// and run thePDFreactorWeb Service (Java/Jetty) locally or remotely.
using RealObjects.PDFreactor.Webservice.Client;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.UserStyleSheets = new System.Collections.Generic.List<Resource>
        {
            new Resource { Content = "@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }" }
        };

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor.Webservice.Client
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim config As New Configuration()
        config.Document = html
        config.UserStyleSheets = New System.Collections.Generic.List(Of Resource) From {
            New Resource With {.Content = "@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }"}
        }

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("document.pdf", result.Document)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()

        renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
            .CenterText = "Header Text"
        }

        renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
            .CenterText = "Page {page}"
        }

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

この例は、最も重要な構文の違いを示しています。PDFreactorはCSSページングメディアの構文を @page ルール、@bottom-center 地域、counter(page) を使用して UserStyleSheets リストの Resource アイテムにより注入されたページ番号に使用します。

IronPDF はネイティブ .NET API を使用し、TextHeaderFooter オブジェクトを RenderingOptions.TextHeaderRenderingOptions.TextFooter に割り当てます。 ページ番号は CSS counter(page) の代わりに {page} プレースホルダーを使用します。


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

サーバーは必要ありません

IronPDFはインプロセスで動作します。Javaサーバーを設定する必要はありません:

// PDFreactor: Requires the Web Service running on a reachable host
var pdfReactor = new PDFreactor("http://localhost:9423/service/rest");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires the Web Service running on a reachable host
var pdfReactor = new PDFreactor("http://localhost:9423/service/rest");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
' PDFreactor: Requires the Web Service running on a reachable host
Dim pdfReactor = New PDFreactor("http://localhost:9423/service/rest")

' IronPDF: No server URL needed
Dim renderer = New ChromePdfRenderer()
$vbLabelText   $csharpLabel

CSSページドメディアからIronPDF APIへ

CSS @page ルールを RenderingOptions に置き換えます:

//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
'PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
'IronPDFequivalent:
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .CenterText = "Page {page}"
}
$vbLabelText   $csharpLabel

ページ番号プレースホルダーの構文

//PDFreactorCSS: counter(page)
// IronPDF: {page}

//PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
//PDFreactorCSS: counter(page)
// IronPDF: {page}

//PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
'PDFreactorCSS: counter(page)
' IronPDF: {page}

'PDFreactorCSS: counter(pages)  
' IronPDF: {total-pages}
$vbLabelText   $csharpLabel

結果処理の変更

Configuration + Resultのパターンが直接PdfDocumentになります:

// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
' PDFreactor: Configuration → Convert → Result → bytes
Dim result As Result = pdfReactor.Convert(config)
Dim bytes As Byte() = result.Document
File.WriteAllBytes("output.pdf", bytes)

' IronPDF: Direct PdfDocument with built-in methods
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or: Dim bytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

マージン単位の変更

PDFreactorは文字列を使用します; IronPDFはミリメートルを使用しています:

// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
' PDFreactor: config.PageMargins.Top = "1in"
' IronPDF: renderer.RenderingOptions.MarginTop = 25.4  ' 1 inch in mm
$vbLabelText   $csharpLabel

移行後の新機能

IronPDFに移行すると、PDFreactorでは提供できない機能が得られます:

PDFマージ

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

ウォーターマーク

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
$vbLabelText   $csharpLabel

テキスト抽出

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

パスワード保護

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
$vbLabelText   $csharpLabel

機能比較の概要

フィーチャー PDFreactor IronPDF
HTMLからPDFへ
URLからPDFへ
ヘッダー/フッター CSSページングメディア ネイティブAPI
ページ設定
JavaScriptサポート
.NET ネイティブ
インプロセス
PDFのマージ
PDFの分割
透かし
テキスト抽出
フォーム入力
デジタル署名

移行チェックリスト

移行前

  • コードベース内のすべてのPDFreactorの使用状況を一覧表示する
  • 使用されているすべてのCSSページメディアルールを文書化する
  • すべての構成設定(余白、ページサイズ、 JavaScript)をメモします。
  • IronPDFライセンス キーの保存を計画する (環境変数を推奨)
  • まずはIronPDFの試用ライセンスでテストしてください

パッケージの変更

  • PDFreactor.dll アセンブリ参照を .csproj から直接削除します -PDFreactorWeb サービス (Java/Jetty) を廃止
  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf

コードの変更

  • 名前空間のインポートを更新します(using RealObjects.PDFreactor.Webservice.Client;using IronPdf;
  • ヘッダー/フッター クラス用に using IronPdf.Rendering; を追加します
  • PDFreactor クラスを ChromePdfRenderer に置き換えます
  • Configuration オブジェクトを RenderingOptions プロパティに変換します
  • config.Document = htmlrenderer.RenderHtmlAsPdf(html) に置き換えます
  • config.Document = urlrenderer.RenderUrlAsPdf(url) に置き換えます
  • File.WriteAllBytes(path, result.Document)pdf.SaveAs(path) に置き換えます
  • CSS @page ルールを TextFooter オブジェクトに変換します
  • ページ番号プレースホルダーを更新します(counter(page){page}
  • マージン単位を文字列からミリメートルに変換する

インフラストラクチャの移行

  • Javaランタイム要件を削除
  • PDFreactorサーバーの廃止
  • Docker/デプロイメント構成を更新する
  • CI/CDパイプラインを更新する

移行後

  • PDF出力の品質が期待に沿うかテスト
  • ヘッダー/フッターのレンダリングを確認する
  • JavaScriptが使用されている場合は実行を検証する
  • 必要に応じて新しい機能(結合、透かし、セキュリティ)を追加します

ご注意PDFReactorはその所有者の登録商標です。 このサイトはRealObjectsと提携しておらず、承認またはスポンサーされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

Curtis Chau
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね