C#でApryse PDFからIronPDFへ移行する方法
AprysePDFからIronPDFへの移行:完全なC#移行ガイド
Apryse PDF(旧PDFTron)は、包括的な文書処理機能で知られるプレミアムエンタープライズPDF SDKです。 しかし、プレミアム価格モデル(開発者1人あたり年間1,500ドル以上)、複雑な統合要件、C++の遺産は、わかりやすいPDF機能を求める開発チームにとって障壁となります。 この包括的なガイドは、Apryse PDFからIronPDFへのステップバイステップの移行経路を提供します。IronPDFは、最新のC#規約、よりシンプルな統合、1回限りの永久ライセンスを持つ.NETネイティブPDFライブラリです。
なぜApryse PDFから移行するのですか?
Apryse PDFは堅牢な機能を提供しますが、開発チームがPDF生成のニーズに対して代替手段を求めるようになるには、いくつかの要因があります。
プレミアム価格とサブスクリプションモデル
Apryse PDFは企業顧客をターゲットにしており、中小規模のプロジェクトでは法外な価格設定になる可能性があります:
| アスペクト | Apryse PDF (PDFTron) | IronPDF |
|---|---|---|
| 開始価格 | 1,500ドル以上/開発者/年(報告済み) | 1回749ドル(Lite) |
| ライセンスモデル | 年間サブスクリプション | 永久ライセンス |
| ビューアライセンス | 別途追加費用 | 該当なし(標準ビューアを使用) |
| サーバーライセンス | 要エンタープライズ価格 | ライセンス階層に含まれるもの |
| 3年間の総費用 | 開発者1人あたり4,500ドル以上 | 749ドル |
統合の複雑さ
Apryse PDFのC#の伝統は、開発速度に影響を与える複雑さをもたらします:
| フィーチャー | Apryse PDF | IronPDF |
|---|---|---|
| セットアップ。 | モジュールパス、外部バイナリ | 単一のNuGetパッケージ |
| 初期化。 | PDFNet.Initialize()(ライセンス付き | 簡単なプロパティの割り当て |
| HTMLレンダリング。 | 外部html2pdfモジュールが必要です。 | 内蔵Chromiumエンジン |
| APIスタイル | C#の遺産、複雑な | 最新のC#規約 |
| 依存関係について | 複数のDLL、プラットフォーム固有 | 自己完結型パッケージ |
いつ移行を考慮すべきか
以下の場合はIronPDFに移行してください:。
- 主にHTML/URLからPDFへの変換が必要です。
- 定型文の少ないシンプルなAPIを希望
- プレミアム価格は、お客様のユースケースに適していません。
- PDFViewCtrlビューアコントロールは必要ありません。
- あなたはサブスクリプションよりも一回限りのライセンスを好む
次のような場合は、Apryse PDFをご利用ください。
- ネイティブビューアコントロール(PDFViewCtrl)が必要です。
- XODまたは独自のフォーマットを多用している。
- 特定のエンタープライズ機能(高度な再編集など)が必要です。
- すでにエンタープライズライセンスを所有している
移行前の準備
前提条件
あなたの環境がこれらの要件を満たしていることを確認してください:
- .NET Framework 4.6.2+または.NET Core 3.1 / .NET 5-9
- Visual Studio 2019+またはC#拡張機能付きVS Code
- NuGetパッケージマネージャへのアクセス
- IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)
AuditのApryse PDFの使用方法
ソリューションディレクトリでこれらのコマンドを実行し、すべてのApryse参照を特定します:
# Find all pdftron using statements
grep -r "using pdftron" --include="*.cs" .
# Find PDFNet initialization
grep -r "PDFNet.Initialize\|PDFNet.SetResourcesPath" --include="*.cs" .
# Find PDFDoc usage
grep -r "new PDFDoc\|PDFDoc\." --include="*.cs" .
# Find HTML2PDF usage
grep -r "HTML2PDF\|InsertFromURL\|InsertFromHtmlString" --include="*.cs" .
# Find ElementReader/Writer usage
grep -r "ElementReader\|ElementWriter\|ElementBuilder" --include="*.cs" .# Find all pdftron using statements
grep -r "using pdftron" --include="*.cs" .
# Find PDFNet initialization
grep -r "PDFNet.Initialize\|PDFNet.SetResourcesPath" --include="*.cs" .
# Find PDFDoc usage
grep -r "new PDFDoc\|PDFDoc\." --include="*.cs" .
# Find HTML2PDF usage
grep -r "HTML2PDF\|InsertFromURL\|InsertFromHtmlString" --include="*.cs" .
# Find ElementReader/Writer usage
grep -r "ElementReader\|ElementWriter\|ElementBuilder" --include="*.cs" .予想される画期的な変更
| Apryse PDFパターン | 必要な変更 |
|---|---|
PDFNet.Initialize()。 | IronPdf.License.LicenseKeyに置き換えてください。 |
HTML2PDFモジュール | 組み込みのChromePdfRendererです。 |
| <コード>ElementReader</コード>/<コード>ElementWriter</コード | IronPDFは内部でコンテンツを処理します。 |
| <コード>SDFDoc.SaveOptions</コード | シンプルなSaveAs()メソッド |
| <コード>PDFViewCtrl</コード | 外部PDFビューアの使用 |
| XODフォーマット | PDFまたは画像に変換 |
| モジュールパスの構成 | 不要 |
ステップごとの移行プロセス
ステップ 1: NuGet パッケージを更新する。
Apryse/PDFTronパッケージを削除し、IronPDFをインストールしてください:
# Remove Apryse/PDFTron packages
dotnet remove package PDFTron.NET.x64
dotnet remove package PDFTron.NET.x86
dotnet remove package pdftron
# Install IronPDF
dotnet add package IronPdf# Remove Apryse/PDFTron packages
dotnet remove package PDFTron.NET.x64
dotnet remove package PDFTron.NET.x86
dotnet remove package pdftron
# Install IronPDF
dotnet add package IronPdfまたはパッケージマネージャーコンソールから:
Uninstall-Package PDFTron.NET.x64
Install-Package IronPdfステップ 2: 名前空間参照の更新
Apryseの名前空間をIronPDFに置き換えてください:
// Remove these
using pdftron;
using pdftron.PDF;
using pdftron.PDF.Convert;
using pdftron.SDF;
using pdftron.Filters;
// Add these
using IronPdf;
using IronPdf.Rendering;// Remove these
using pdftron;
using pdftron.PDF;
using pdftron.PDF.Convert;
using pdftron.SDF;
using pdftron.Filters;
// Add these
using IronPdf;
using IronPdf.Rendering;IRON VB CONVERTER ERROR developers@ironsoftware.comステップ 3: 初期化ボイラープレートの削除
Apryse PDFは複雑な初期化を必要とします。 IronPDFはこのような問題を完全に解決します。
ApryseのPDF実装:。
// Complex initialization
PDFNet.Initialize("YOUR_LICENSE_KEY");
PDFNet.SetResourcesPath("path/to/resources");
// Plus module path for HTML2PDF...// Complex initialization
PDFNet.Initialize("YOUR_LICENSE_KEY");
PDFNet.SetResourcesPath("path/to/resources");
// Plus module path for HTML2PDF...IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
// Simple license assignment (optional for development)
IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";// Simple license assignment (optional for development)
IronPdf.License.LicenseKey = "YOUR_LICENSE_KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFではPDFNet.Terminate()コールは必要ありません。
完全な API 移行のリファレンス
コア クラス マッピング
| Apryse PDFクラス | IronPDF 同等物 | ノート |
|---|---|---|
| <コード>PDFDoc</コード | <コード>PdfDocument</コード | 主なドキュメントクラス |
HTML2PDF | <コード>ChromePdfRenderer</コード | HTMLからPDFへの変換。 |
| <コード>TextExtractor</コード | PdfDocument.ExtractAllText()。 | テキスト抽出。 |
| <コード>スタンパー</コード | PdfDocument.ApplyWatermark()。 | 透かしとスタンプ |
| <コード>PDFDraw</コード | PdfDocument.ToBitmap()を使用してください。 | ラスタライズ |
| <コード>SecurityHandler</コード | <コード>PdfDocument.SecuritySettings</コード | 暗号化/パスワード。 |
| <コード>PDFNet</コード | IronPdf.ライセンス | ライセンスと設定 |
ドキュメント操作
| ApryseのPDFメソッド | IronPDF メソッド | ノート |
|---|---|---|
new PDFDoc() とします。 | new PdfDocument(). | 空のドキュメント |
new PDFDoc(path) とします。 | PdfDocument.FromFile(パス)。 | ファイルから読み込む |
new PDFDoc(buffer) とします。 | <コード>PdfDocument.FromBinaryData(bytes)</コード><コード>PdfDocument.FromBinaryData(bytes) | バイトから読み込む |
doc.Save(path, options). | pdf.SaveAs(path)のようにします。 | ファイルに保存 |
doc.Save(バッファ)を実行します。 | <コード>pdf.BinaryData</コード | バイト数 |
| <コード>doc.Close()</コード | <コード>pdf.Dispose()</コード | クリーンアップ (または using を使用) |
| <コード>doc.GetPageCount()</コード | <コード>pdf.PageCount</コード | ページ数 |
doc.AppendPages(doc2, start, end). | PdfDocument.Merge(pdfs). | ドキュメントをマージする. |
HTMLからPDFへの変換
| ApryseのPDFメソッド | IronPDF メソッド | ノート |
|---|---|---|
HTML2PDF.Convert(doc). | renderer.RenderHtmlAsPdf(html). | PdfDocument を返します。 |
converter.InsertFromURL(url). | renderer.RenderUrlAsPdf(url)のようにします。 | URL変換。 |
converter.InsertFromHtmlString(html). | renderer.RenderHtmlAsPdf(html). | HTML文字列 |
| <コード>converter.SetModulePath(path)</コード><コード>converter.SetModulePath(path) | 不要 | 組み込みエンジン |
converter.SetPaperSize(width, height). | <コード>RenderingOptions.PaperSize</コード | 用紙サイズ |
converter.SetLandscape(true). | <コード>RenderingOptions.PaperOrientation</コード | オリエンテーション |
コード移行の例
HTML文字列をPDFに変換
最も一般的な作業は、定型的なコードを劇的に削減することを実証しています。
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
class Program
{
static void Main()
{
PDFNet.Initialize("YOUR_LICENSE_KEY");
PDFNet.SetResourcesPath("path/to/resources");
string html = "<html><body><h1>Hello World</h1><p>Content here</p></body></html>";
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.SetModulePath("path/to/html2pdf");
converter.InsertFromHtmlString(html);
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
if (converter.Convert(doc))
{
doc.Save("output.pdf", SDFDoc.SaveOptions.e_linearized);
Console.WriteLine("PDF created successfully");
}
else
{
Console.WriteLine($"Conversion failed: {converter.GetLog()}");
}
}
PDFNet.Terminate();
}
}using pdftron;
using pdftron.PDF;
class Program
{
static void Main()
{
PDFNet.Initialize("YOUR_LICENSE_KEY");
PDFNet.SetResourcesPath("path/to/resources");
string html = "<html><body><h1>Hello World</h1><p>Content here</p></body></html>";
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.SetModulePath("path/to/html2pdf");
converter.InsertFromHtmlString(html);
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
if (converter.Convert(doc))
{
doc.Save("output.pdf", SDFDoc.SaveOptions.e_linearized);
Console.WriteLine("PDF created successfully");
}
else
{
Console.WriteLine($"Conversion failed: {converter.GetLog()}");
}
}
PDFNet.Terminate();
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
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;
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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfは初期化、モジュールパス、クリーンアップコードを排除し、35行以上を5行に削減します。
URLからPDFへの変換
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.SetModulePath("path/to/html2pdf");
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetLoadImages(true);
settings.SetAllowJavaScript(true);
settings.SetPrintBackground(true);
converter.InsertFromURL("https://example.com", settings);
if (converter.Convert(doc))
{
doc.Save("webpage.pdf", SDFDoc.SaveOptions.e_linearized);
}
}
PDFNet.Terminate();using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.SetModulePath("path/to/html2pdf");
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetLoadImages(true);
settings.SetAllowJavaScript(true);
settings.SetPrintBackground(true);
converter.InsertFromURL("https://example.com", settings);
if (converter.Convert(doc))
{
doc.Save("webpage.pdf", SDFDoc.SaveOptions.e_linearized);
}
}
PDFNet.Terminate();IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com複数のPDFをマージする
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc mainDoc = new PDFDoc())
{
string[] files = { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
foreach (string file in files)
{
using (PDFDoc doc = new PDFDoc(file))
{
mainDoc.AppendPages(doc, 1, doc.GetPageCount());
}
}
mainDoc.Save("merged.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc mainDoc = new PDFDoc())
{
string[] files = { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
foreach (string file in files)
{
using (PDFDoc doc = new PDFDoc(file))
{
mainDoc.AppendPages(doc, 1, doc.GetPageCount());
}
}
mainDoc.Save("merged.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPdfの静的なMergeメソッドは複数のドキュメントを直接受け取ることができ、ページの反復パターンを排除します。
テキスト抽出
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
TextExtractor extractor = new TextExtractor();
for (int i = 1; i <= doc.GetPageCount(); i++)
{
Page page = doc.GetPage(i);
extractor.Begin(page);
string pageText = extractor.GetAsText();
Console.WriteLine($"Page {i}:");
Console.WriteLine(pageText);
}
}
PDFNet.Terminate();using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
TextExtractor extractor = new TextExtractor();
for (int i = 1; i <= doc.GetPageCount(); i++)
{
Page page = doc.GetPage(i);
extractor.Begin(page);
string pageText = extractor.GetAsText();
Console.WriteLine($"Page {i}:");
Console.WriteLine(pageText);
}
}
PDFNet.Terminate();IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text at once
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
// Extract from specific page
string page1Text = pdf.ExtractTextFromPage(0); // 0-indexed
Console.WriteLine($"Page 1: {page1Text}");using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text at once
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
// Extract from specific page
string page1Text = pdf.ExtractTextFromPage(0); // 0-indexed
Console.WriteLine($"Page 1: {page1Text}");IRON VB CONVERTER ERROR developers@ironsoftware.com透かしの追加
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
Stamper stamper = new Stamper(Stamper.SizeType.e_relative_scale, 0.5, 0.5);
stamper.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_center,
Stamper.VerticalAlignment.e_vertical_center);
stamper.SetOpacity(0.3);
stamper.SetRotation(45);
stamper.SetFontColor(new ColorPt(1, 0, 0));
stamper.SetTextAlignment(Stamper.TextAlignment.e_align_center);
stamper.StampText(doc, "CONFIDENTIAL",
new PageSet(1, doc.GetPageCount()));
doc.Save("watermarked.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();using pdftron;
using pdftron.PDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
Stamper stamper = new Stamper(Stamper.SizeType.e_relative_scale, 0.5, 0.5);
stamper.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_center,
Stamper.VerticalAlignment.e_vertical_center);
stamper.SetOpacity(0.3);
stamper.SetRotation(45);
stamper.SetFontColor(new ColorPt(1, 0, 0));
stamper.SetTextAlignment(Stamper.TextAlignment.e_align_center);
stamper.StampText(doc, "CONFIDENTIAL",
new PageSet(1, doc.GetPageCount()));
doc.Save("watermarked.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
// HTML-based watermark with full styling control
string watermarkHtml = @"
<div style='
color: red;
opacity: 0.3;
font-size: 72px;
font-weight: bold;
text-align: center;
'>CONFIDENTIAL</div>";
pdf.ApplyWatermark(watermarkHtml,
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
// HTML-based watermark with full styling control
string watermarkHtml = @"
<div style='
color: red;
opacity: 0.3;
font-size: 72px;
font-weight: bold;
text-align: center;
'>CONFIDENTIAL</div>";
pdf.ApplyWatermark(watermarkHtml,
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFはHTML/CSSベースの電子透かしを使用し、使い慣れたウェブ技術で完全なスタイルコントロールを提供します。
パスワード保護
ApryseのPDF実装:。
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
SecurityHandler handler = new SecurityHandler();
handler.ChangeUserPassword("user123");
handler.ChangeMasterPassword("owner456");
handler.SetPermission(SecurityHandler.Permission.e_print, false);
handler.SetPermission(SecurityHandler.Permission.e_extract_content, false);
doc.SetSecurityHandler(handler);
doc.Save("protected.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();using pdftron;
using pdftron.PDF;
using pdftron.SDF;
PDFNet.Initialize("YOUR_LICENSE_KEY");
using (PDFDoc doc = new PDFDoc("document.pdf"))
{
SecurityHandler handler = new SecurityHandler();
handler.ChangeUserPassword("user123");
handler.ChangeMasterPassword("owner456");
handler.SetPermission(SecurityHandler.Permission.e_print, false);
handler.SetPermission(SecurityHandler.Permission.e_extract_content, false);
doc.SetSecurityHandler(handler);
doc.Save("protected.pdf", SDFDoc.SaveOptions.e_linearized);
}
PDFNet.Terminate();IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFの実装:。
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Set passwords
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Set passwords
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("protected.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comヘッダーとフッター
IronPDFの実装:。
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:12px;'>Company Header</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;'>Company Header</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");IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDFは{page}<//code>や{total-pages}<//code>のようなプレースホルダートークンをサポートしています。 その他のオプションについては、headers and footers documentationを参照してください。
.NETコアの統合
Apryse PDFの初期化要件は、Webアプリケーションの統合を複雑にします。 IronPDFはこのパターンを簡素化します。
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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com依存性注入の構成
// Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Set license once
IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];
// Register renderer as scoped service
services.AddScoped<ChromePdfRenderer>();
// Or create a wrapper service
services.AddScoped<IPdfService, IronPdfService>();
}
// IronPdfService.cs
public class IronPdfService : IPdfService
{
private readonly ChromePdfRenderer _renderer;
public IronPdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
_renderer.RenderingOptions.PrintHtmlBackgrounds = true;
}
public PdfDocument GenerateFromHtml(string html) =>
_renderer.RenderHtmlAsPdf(html);
public Task<PdfDocument> GenerateFromHtmlAsync(string html) =>
_renderer.RenderHtmlAsPdfAsync(html);
}// Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Set license once
IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"];
// Register renderer as scoped service
services.AddScoped<ChromePdfRenderer>();
// Or create a wrapper service
services.AddScoped<IPdfService, IronPdfService>();
}
// IronPdfService.cs
public class IronPdfService : IPdfService
{
private readonly ChromePdfRenderer _renderer;
public IronPdfService()
{
_renderer = new ChromePdfRenderer();
_renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
_renderer.RenderingOptions.PrintHtmlBackgrounds = true;
}
public PdfDocument GenerateFromHtml(string html) =>
_renderer.RenderHtmlAsPdf(html);
public Task<PdfDocument> GenerateFromHtmlAsync(string html) =>
_renderer.RenderHtmlAsPdfAsync(html);
}IRON VB CONVERTER ERROR developers@ironsoftware.comパフォーマンス比較
| メトリック | Apryse PDF | IronPDF |
|---|---|---|
| コールドスタート。 | 高速(ネイティブコード) | ~2s (Chromium init) |
| 後続のレンダリング | 高速 | 高速 |
| 複雑なHTML。 | 変数(html2pdfモジュール) | エクセレント(Chromium) |
| CSSのサポート。 | 制限的 | 完全なCSS3 |
| JavaScript(ジャバスクリプト | 制限的 | フルサポート |
パフォーマンス最適化のヒント
// 1. Reuse renderer instance
private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer();
// 2. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay
renderer.RenderingOptions.Timeout = 30000; // 30s max
// 3. Proper disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}// 1. Reuse renderer instance
private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer();
// 2. Disable unnecessary features for speed
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = false; // If not needed
renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay
renderer.RenderingOptions.Timeout = 30000; // 30s max
// 3. Proper disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.comよくある移行の問題のトラブルシューティング
問題モジュールパスのエラー
IronPDFのChromiumエンジンが組み込まれています:
// Remove this
converter.SetModulePath("path/to/html2pdf");
// Just use the renderer
var renderer = new ChromePdfRenderer();// Remove this
converter.SetModulePath("path/to/html2pdf");
// Just use the renderer
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com問題:PDFNet.Initialize() が見つかりません。
IronPDFのライセンスセットアップと置き換えてください:
// Remove this
PDFNet.Initialize("KEY");
PDFNet.SetResourcesPath("path");
// Use this (optional for development)
IronPdf.License.LicenseKey = "YOUR-KEY";// Remove this
PDFNet.Initialize("KEY");
PDFNet.SetResourcesPath("path");
// Use this (optional for development)
IronPdf.License.LicenseKey = "YOUR-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.com課題PDFViewCtrl の置き換え
IronPDFにはビューアーコントロールは含まれていません。 オプション
- PDF.jsをWebビューアに使用する
- システムPDFビューアの使用
- サードパーティのビューアコンポーネントを検討する
移行後のチェックリスト
コードの移行が完了したら、以下を確認してください:
- [PDF 出力の品質が期待値と一致していることを確認します。
- [すべてのエッジケース(大きな文書、複雑なCSS)をテストしてください。)
- [パフォーマンスメトリクスの比較
- [該当する場合は、Dockerの設定を更新してください。
- [Apryse のライセンスと関連設定を削除してください。
- [IronPdf固有の設定を文書化してください。
- [新しいAPIパターンに関するチームのトレーニング
- [必要に応じてCI/CDパイプラインを更新してください。
PDFインフラストラクチャの将来性を確保する
.NET 10が目前に迫り、C# 14が新しい言語機能を導入する中、最新の規約を持つネイティブの.NET PDFライブラリを選択することで、進化するランタイム機能との互換性を確保できます。 IronPDFは最新の.NETバージョンをサポートすることに専念しており、プロジェクトが2025年、2026年まで継続しても、年間サブスクリプションの更新なしで、移行への投資は報われます。
その他のリソース
Apryse PDFからIronPDFへの移行は、あなたのPDFコードベースを複雑なC++パターンからイディオムなC#に変換します。 初期化の定型文、モジュールパスの構成、サブスクリプションベースのライセンスを排除することで、長期的なコストを削減しながら、生産性を即座に向上させます。






