IronPDF vs PDFTron (Apryse): 2025年の完全なC# PDFライブラリ比較
.NET プロジェクトに適した PDF ライブラリをお探しですか? IronPDF と PDFTron (現 Apryse) の包括的な比較では、機能、価格、パフォーマンス、開発者エクスペリエンスを分析し、情報に基づいた決定を下せるよう支援します。 Web アプリケーション、デスクトップ ソフトウェア、クラウド サービスなどを構築する場合でも、適切な PDF ツールキットを選択すると、開発速度とプロジェクトの成功に大きな影響を与える可能性があります。
簡単な比較概要
| **カテゴリ** | **特徴/側面** | **IronPDF** | **PDFTron(アプリセ)** | **主な利点**:以下のとおりです。 |
|---|---|---|---|---|
| **コア**アーキテクチャ | デザイン哲学 | シンプルさを第一に考えたChrome V8エンジン | エンタープライズ向けカスタムエンジン | IronPDF: より速い開発 |
| APIの複雑さ | RenderHtmlAsPdf() のような単純なメソッドです。 | IronPDF: コードが70%削減 | ||
| 学習曲線 | 通常1~2日 | 通常1~2週間 | IronPDF: より迅速な導入 | |
| **プラットフォームサポート** | クロスプラットフォーム | ネイティブサポート、単一パッケージ | 複数のパッケージ/モジュールが必要 | IronPDF: よりシンプルな導入 |
| .NETバージョン | .NET 10、9、8、7、6、5、Core 3.1 以上、Framework 4.6.2 以上 | 追加のセットアップによる同様のサポート | 両方: 最新のフレームワークのサポート | |
| **HTMLからPDFへ** | レンダリングエンジン | フルChromeV8エンジン | カスタムエンジン(HTML2PDFモジュール経由) | IronPDF: 98%以上のブラウザ忠実度 |
| JavaScriptサポート | レンダリング遅延を完全サポート | 限定的なサポート | IronPDF: 動的コンテンツ対応 | |
| **MS Office サポート**。 | DOCXからPDF | 組み込みの DocxToPdfRenderer | PDFTron: より優れたオフィスの忠実性 | |
| CADサポート | 利用不可 | DWG、DXF、DGNからPDFへ | PDFTron: CADワークフロー | |
| **パフォーマンス** | HTMLレンダリング速度 | 通常 0.8~1.2 秒 (Chrome エンジン) | 通常 0.3~0.5 秒(シンプルな HTML) | PDFTron: 基本的なHTMLの高速化 |
| メモリ使用量 | 150~200MB(Chromeプロセス) | 通常80~120MB | PDFTron: メモリフットプリントの削減 | |
| **Licensing & Pricing** | エントリーレベル | Lite: $999 (1 dev, 1 project) | カスタム見積もり(推定 5,000~10,000ドル以上) | IronPDF: 透明な価格設定 |
| エンタープライズ | Professional: $2,999 (10 devs) | カスタム見積もり(推定30,000ドル以上) | IronPDF: 最大90%のコスト削減 | |
| **サポート** | サポートが含まれています | はい、24時間365日のエンジニアリングサポート | ライセンスレベルによって異なります | IronPDF: サポートが含まれています |
| **最適**な対象 | 使用例 | 最新のウェブアプリ、HTMLレポート、迅速な開発 | ドキュメント中心のワークフロー、CAD/Office変換 | 文脈依存 |
IronPDF と PDFTron (Apryse) とは何ですか?
IronPDFの概要
IronPDF は、開発者にとって PDF の作成、編集、操作を簡素化する包括的な .NET PDF ライブラリです。 Chrome レンダリング エンジン上に構築されており、HTML、CSS、JavaScript をピクセルパーフェクトな PDF ドキュメントに変換するのに優れています。 ライブラリのわかりやすい API 設計により、開発者は最小限のコードで PDF 機能を統合できるため、Web アプリケーション、レポート システム、ドキュメント自動化に最適です。
PDFTron(Apryse)の概要
PDFTron は、2023 年 2 月に Apryse としてブランド名を変更し、広範なドキュメント処理機能を提供するエンタープライズ向けの PDF SDK です。 もともと複雑なドキュメントワークフロー向けに開発されたこのツールは、Microsoft Office、CAD図面、特殊なドキュメントタイプなど、様々なファイル形式を強力にサポートしています。ドキュメント処理技術の世界的リーダーであるPDFTron Systems Inc.は、Apryseへのブランド変更を発表しました。 iText、Windward、Eversign など 13 社が参加します。
PDF 生成用の ASP.NET プロジェクトを作成するにはどうすればよいですか?
PDF 生成用に ASP.NET プロジェクトを設定するには、選択したライブラリに関係なく適切な構成が必要です。 IronPDF または PDFTron の統合の基盤を作成するには、次の手順に従います。
- Visual Studio 2022以降を開きます 2."新しいプロジェクトを作成"をクリックします
- "ASP.NET Core Web アプリ"を選択します(.NET 6.0 以降を推奨)
- プロジェクト名と場所を選択する
- ニーズに応じて"Webアプリケーション(モデル・ビュー・コントローラ)"または"Web API"を選択します。
- 最適な互換性を確保するには、".NET 8.0"以降が選択されていることを確認してください。
PDF ライブラリ統合用の ASP.NET プロジェクト テンプレートが表示された Visual Studio の [新しいプロジェクト] ダイアログ ボックス
Web フォーム アプリケーションの場合:
- "ASP.NET Web アプリケーション (.NET Framework)"を選択します。
- テンプレートオプションから"Webフォーム"を選択します
- "作成"をクリックしてプロジェクト構造を生成します
PDF 機能を備えた従来の ASP.NET アプリケーション用の Web フォーム テンプレートの選択
C# プロジェクトに IronPDF をインストールするにはどうすればいいですか?
IronPDF は、さまざまな開発ワークフローに合わせて複数のインストール方法を提供します。 Visual Studio で、ソリューション エクスプローラーのプロジェクトを右クリックし、"NuGet パッケージの管理"を選択します。 そこから、IronPDF を検索し、最新バージョンをインストールします。
方法 1: Visual Studio パッケージ マネージャーを使用する
最も簡単なアプローチは、Visual Studio に組み込まれている NuGet パッケージ マネージャーを使用することです。
- ソリューションエクスプローラーでプロジェクトを右クリック
- "NuGetパッケージの管理" を選択
- "参照" をクリックし、"IronPDF" を検索
- IronPDFパッケージの"インストール"をクリックします。
IronPDF をインストールするために Visual Studio のソリューション エクスプローラーから NuGet パッケージ マネージャーにアクセスする
Visual Studio のプロジェクト メニューから NuGet パッケージ マネージャーにアクセスできる代替方法
バージョン情報と依存関係を指定して NuGet パッケージ マネージャー経由で IronPDF をインストールする
方法2: パッケージマネージャーコンソールを使用する
コマンドラインツールを好む開発者向け:
# Open Package Manager Console in Visual Studio
# Tools > NuGet Package Manager > Package Manager Console
Install-Package IronPdf
# For specific version installation
Install-Package IronPdf -Version 2025.7.0
# Open Package Manager Console in Visual Studio
# Tools > NuGet Package Manager > Package Manager Console
Install-Package IronPdf
# For specific version installation
Install-Package IronPdf -Version 2025.7.0
方法3: 直接ダウンロードによるインストール
NuGet アクセスのない環境の場合:
- IronPDFの公式サイトからダウンロードする
- ZIPファイルをプロジェクトディレクトリに解凍します。
- Visual Studioで、"参照設定"を右クリック→"参照の追加"
IronPdf.dllを参照して選択します。
方法4: .NET CLIを使用する
コマンドライン愛好家と CI/CD パイプライン向け:
# Navigate to your project directory
cd MyProject
# Install IronPDF
dotnet add package IronPdf
# Restore packages
dotnet restore
# Navigate to your project directory
cd MyProject
# Install IronPDF
dotnet add package IronPdf
# Restore packages
dotnet restore
PDFTron (Apryse) SDK をインストールするにはどうすればよいですか?
PDFTron のインストールには、モジュール型アーキテクチャとエンタープライズ重視のため、より多くの手順が含まれます。 プロセスは、ターゲット プラットフォームと必要な機能によって異なります。
前提条件
- Visual Studio 2019以降
- .NETデスクトップ開発ワークロード
- .NET Framework 4.5.1 以降の開発ツール
- PDFTron SDKのダウンロード
手動統合手順
-
SDKを解凍する
# Example extraction path PDFNET_BASE = C:/PDFTron/PDFNetDotNet4/# Example extraction path PDFNET_BASE = C:/PDFTron/PDFNetDotNet4/SHELL
2.ライセンスキーで初期化する
// Initialize PDFTron with your license key
pdftron.PDFNet.Initialize("your-license-key-here");
// Note: Demo keys expire after evaluation period
// Contact Apryse sales for production licenses
// Initialize PDFTron with your license key
pdftron.PDFNet.Initialize("your-license-key-here");
// Note: Demo keys expire after evaluation period
// Contact Apryse sales for production licenses
' Initialize PDFTron with your license key
pdftron.PDFNet.Initialize("your-license-key-here")
' Note: Demo keys expire after evaluation period
' Contact Apryse sales for production licenses
3.必要なライブラリをコピーする
LibフォルダをPDFNET_BASEからプロジェクトディレクトリにコピーします。PDFNetLoader.dllとプラットフォーム固有のPDFNet.dllの両方への参照を追加します。
4.ローカルプロパティのコピーを構成する
PDFTron を適切に展開するには、PDFNet.dll の Copy Local プロパティを False に設定します。
- App.configを更新する
<configuration> <runtime> <loadFromRemoteSources enabled="true" /> </runtime> </configuration><configuration> <runtime> <loadFromRemoteSources enabled="true" /> </runtime> </configuration>XML
6.ビルド後のイベントを構成する
xcopy $(ProjectDir)Lib\PDFNet $(TargetDir)PDFNet /S /I /Y
xcopy $(ProjectDir)Lib\PDFNet $(TargetDir)PDFNet /S /I /Y
NuGet のインストール (簡略化)
より合理的なアプローチ:
- NuGet パッケージ マネージャーを開く
- "PDFTron.NET.x64"またはプラットフォーム固有のパッケージを検索します
- アーキテクチャに適したパッケージをインストールする
プラットフォーム固有のパッケージを使用してNuGetパッケージマネージャー経由でPDFTronをインストールする
PDFTronは、ComPDFKitの10種類以上と比較して、30種類以上の注釈タイプを提供しています。ただし、この豊富な機能セットを利用するには、インストール時にモジュールを慎重に選択する必要があります。
これらのライブラリを使用して URL を PDF に変換するにはどうすればよいですか?
どちらのライブラリも URL から PDF への変換機能を提供しますが、アプローチと機能は異なります。 それぞれの実装の詳細とパフォーマンス特性を調べてみましょう。
IronPDF で URL を PDF に変換する
IronPDF の Chrome レンダリング エンジンは、最新の Web 標準に対する優れたサポートを提供します。
using IronPdf;
// Initialize the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer();
// Configure rendering for optimal results
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS execution
// Handle authentication if needed
renderer.LoginCredentials = new ChromeHttpLoginCredentials() {
Username = "user@domain.com",
Password = "secure_password"
};
// Render URL to PDF with full browser capabilities
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Add metadata for document management
pdf.MetaData.Author = "Development Team";
pdf.MetaData.Title = "Website Export - " + DateTime.Now.ToString("yyyy-MM-dd");
// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("website-export.pdf");
using IronPdf;
// Initialize the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer();
// Configure rendering for optimal results
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 1000; // Wait for JS execution
// Handle authentication if needed
renderer.LoginCredentials = new ChromeHttpLoginCredentials() {
Username = "user@domain.com",
Password = "secure_password"
};
// Render URL to PDF with full browser capabilities
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/");
// Add metadata for document management
pdf.MetaData.Author = "Development Team";
pdf.MetaData.Title = "Website Export - " + DateTime.Now.ToString("yyyy-MM-dd");
// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("website-export.pdf");
Imports IronPdf
' Initialize the Chrome renderer with advanced options
Private renderer = New ChromePdfRenderer()
' Configure rendering for optimal results
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 1000 ' Wait for JS execution
' Handle authentication if needed
renderer.LoginCredentials = New ChromeHttpLoginCredentials() With {
.Username = "user@domain.com",
.Password = "secure_password"
}
' Render URL to PDF with full browser capabilities
Dim pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/")
' Add metadata for document management
pdf.MetaData.Author = "Development Team"
pdf.MetaData.Title = "Website Export - " & DateTime.Now.ToString("yyyy-MM-dd")
' Save with compression
pdf.CompressImages(90)
pdf.SaveAs("website-export.pdf")
IronPDF の Chrome レンダラーは、次のような複雑なシナリオを処理します。
- JavaScript を多用したシングルページ アプリケーション (SPA)
- メディアクエリを使ったレスポンシブデザイン
- Webフォントと外部スタイルシート
- AJAXコンテンツの読み込み
- CSSアニメーションとトランジション
IronPDF メイン ブランチは現在、これらすべてをサポートしています: nuget.org/packages/IronPdf 。 最近のパフォーマンスの向上により、特に複雑な Web アプリケーションではレンダリング速度が大幅に向上しました。
PDFTron (Apryse) で URL を PDF に変換
PDFTron では、Web コンテンツの変換に HTML2PDF モジュールが必要です。
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
class UrlToPdfConverter
{
public static void ConvertUrlToPdf(string url, string outputPath)
{
// Initialize PDFTron with license
PDFNet.Initialize("your-license-key");
// Create a new PDF document
using (PDFDoc doc = new PDFDoc())
{
// Initialize HTML2PDF converter
HTML2PDF converter = new HTML2PDF();
// Configure conversion settings
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
// Set page dimensions
converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
converter.SetMargins(0.5, 0.5, 0.5, 0.5);
// Insert URL content
converter.InsertFromURL(url);
// Perform conversion
if (converter.Convert(doc))
{
// Save the resulting PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
Console.WriteLine($"Successfully converted {url} to {outputPath}");
}
else
{
Console.WriteLine("Conversion failed");
}
}
}
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
class UrlToPdfConverter
{
public static void ConvertUrlToPdf(string url, string outputPath)
{
// Initialize PDFTron with license
PDFNet.Initialize("your-license-key");
// Create a new PDF document
using (PDFDoc doc = new PDFDoc())
{
// Initialize HTML2PDF converter
HTML2PDF converter = new HTML2PDF();
// Configure conversion settings
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
// Set page dimensions
converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
converter.SetMargins(0.5, 0.5, 0.5, 0.5);
// Insert URL content
converter.InsertFromURL(url);
// Perform conversion
if (converter.Convert(doc))
{
// Save the resulting PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
Console.WriteLine($"Successfully converted {url} to {outputPath}");
}
else
{
Console.WriteLine("Conversion failed");
}
}
}
}
Imports pdftron
Imports pdftron.PDF
Imports pdftron.SDF
Friend Class UrlToPdfConverter
Public Shared Sub ConvertUrlToPdf(ByVal url As String, ByVal outputPath As String)
' Initialize PDFTron with license
PDFNet.Initialize("your-license-key")
' Create a new PDF document
Using doc As New PDFDoc()
' Initialize HTML2PDF converter
Dim converter As New HTML2PDF()
' Configure conversion settings
Dim settings As New HTML2PDF.WebPageSettings()
settings.SetPrintBackground(True)
settings.SetLoadImages(True)
' Set page dimensions
converter.SetPaperSize(PrinterMode.PaperSize.e_letter)
converter.SetMargins(0.5, 0.5, 0.5, 0.5)
' Insert URL content
converter.InsertFromURL(url)
' Perform conversion
If converter.Convert(doc) Then
' Save the resulting PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized)
Console.WriteLine($"Successfully converted {url} to {outputPath}")
Else
Console.WriteLine("Conversion failed")
End If
End Using
End Sub
End Class
PDFTron HTML2PDF に関する重要な考慮事項:
- PDFTron の SDK は、テクノロジーの幅広さ (API、機能) と配布範囲 (外部ユーザーまたは内部ユーザー) に基づいて見積もられます。
- ブラウザエンジンに比べてJavaScriptのサポートが限られている
- 複雑なレイアウトの場合は追加の設定が必要になる場合があります
- よりシンプルなHTMLドキュメントに適しています
HTML 文字列から PDF を作成するにはどうすればよいですか?
動的なレポート、請求書、ドキュメントを生成するには、HTML 文字列から PDF を作成することが不可欠です。 両方のライブラリはこれを異なる方法で処理します。
IronPDF で HTML 文字列を PDF に変換する
IronPDF は、完全な CSS3 と JavaScript のサポートにより、複雑な HTML のレンダリングに優れています。
using IronPdf;
using System.Text;
public class HtmlStringToPdfConverter
{
public static PdfDocument GenerateInvoice(InvoiceData data)
{
// Build dynamic HTML with modern CSS
var html = new StringBuilder();
html.Append(@"
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');
body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 20px;
color: #333;
}
.invoice-header {
display: flex;
justify-content: space-between;
border-bottom: 2px solid #007bff;
padding-bottom: 20px;
margin-bottom: 30px;
}
.company-logo {
width: 150px;
height: auto;
}
.invoice-details {
text-align: right;
}
.invoice-number {
font-size: 24px;
font-weight: 700;
color: #007bff;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
td {
padding: 12px;
border-bottom: 1px solid #dee2e6;
}
.total-row {
font-weight: 700;
font-size: 18px;
background-color: #e9ecef;
}
@media print {
body { margin: 0; }
.no-print { display: none; }
}
</style>
</head>
<body>
");
// Add invoice header
html.Append($@"
<div class='invoice-header'>
<div>
<img src='data:image/png;base64,{data.CompanyLogoBase64}' class='company-logo' alt='Company Logo'>
<h2>{data.CompanyName}</h2>
<p>{data.CompanyAddress}</p>
</div>
<div class='invoice-details'>
<div class='invoice-number'>Invoice #{data.InvoiceNumber}</div>
<p>Date: {data.InvoiceDate:yyyy-MM-dd}</p>
<p>Due: {data.DueDate:yyyy-MM-dd}</p>
</div>
</div>
");
// Add line items table
html.Append(@"
<table>
<thead>
<tr>
<th>Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
");
foreach (var item in data.LineItems)
{
html.Append($@"
<tr>
<td>{item.Description}</td>
<td>{item.Quantity}</td>
<td>${item.UnitPrice:F2}</td>
<td>${item.Total:F2}</td>
</tr>
");
}
html.Append($@"
</tbody>
<tfoot>
<tr class='total-row'>
<td colspan='3'>Total</td>
<td>${data.Total:F2}</td>
</tr>
</tfoot>
</table>
</body>
</html>
");
// Configure renderer for optimal output
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Generate PDF with proper base path for assets
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// Add security if needed
pdf.SecuritySettings.UserPassword = data.CustomerEmail;
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
return pdf;
}
}
using IronPdf;
using System.Text;
public class HtmlStringToPdfConverter
{
public static PdfDocument GenerateInvoice(InvoiceData data)
{
// Build dynamic HTML with modern CSS
var html = new StringBuilder();
html.Append(@"
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');
body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 20px;
color: #333;
}
.invoice-header {
display: flex;
justify-content: space-between;
border-bottom: 2px solid #007bff;
padding-bottom: 20px;
margin-bottom: 30px;
}
.company-logo {
width: 150px;
height: auto;
}
.invoice-details {
text-align: right;
}
.invoice-number {
font-size: 24px;
font-weight: 700;
color: #007bff;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
td {
padding: 12px;
border-bottom: 1px solid #dee2e6;
}
.total-row {
font-weight: 700;
font-size: 18px;
background-color: #e9ecef;
}
@media print {
body { margin: 0; }
.no-print { display: none; }
}
</style>
</head>
<body>
");
// Add invoice header
html.Append($@"
<div class='invoice-header'>
<div>
<img src='data:image/png;base64,{data.CompanyLogoBase64}' class='company-logo' alt='Company Logo'>
<h2>{data.CompanyName}</h2>
<p>{data.CompanyAddress}</p>
</div>
<div class='invoice-details'>
<div class='invoice-number'>Invoice #{data.InvoiceNumber}</div>
<p>Date: {data.InvoiceDate:yyyy-MM-dd}</p>
<p>Due: {data.DueDate:yyyy-MM-dd}</p>
</div>
</div>
");
// Add line items table
html.Append(@"
<table>
<thead>
<tr>
<th>Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
");
foreach (var item in data.LineItems)
{
html.Append($@"
<tr>
<td>{item.Description}</td>
<td>{item.Quantity}</td>
<td>${item.UnitPrice:F2}</td>
<td>${item.Total:F2}</td>
</tr>
");
}
html.Append($@"
</tbody>
<tfoot>
<tr class='total-row'>
<td colspan='3'>Total</td>
<td>${data.Total:F2}</td>
</tr>
</tfoot>
</table>
</body>
</html>
");
// Configure renderer for optimal output
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Generate PDF with proper base path for assets
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// Add security if needed
pdf.SecuritySettings.UserPassword = data.CustomerEmail;
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
return pdf;
}
}
Imports IronPdf
Imports System.Text
Public Class HtmlStringToPdfConverter
Public Shared Function GenerateInvoice(ByVal data As InvoiceData) As PdfDocument
' Build dynamic HTML with modern CSS
Dim html = New StringBuilder()
html.Append("
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');
body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 20px;
color: #333;
}
.invoice-header {
display: flex;
justify-content: space-between;
border-bottom: 2px solid #007bff;
padding-bottom: 20px;
margin-bottom: 30px;
}
.company-logo {
width: 150px;
height: auto;
}
.invoice-details {
text-align: right;
}
.invoice-number {
font-size: 24px;
font-weight: 700;
color: #007bff;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
td {
padding: 12px;
border-bottom: 1px solid #dee2e6;
}
.total-row {
font-weight: 700;
font-size: 18px;
background-color: #e9ecef;
}
@media print {
body { margin: 0; }
.no-print { display: none; }
}
</style>
</head>
<body>
")
' Add invoice header
html.Append($"
<div class='invoice-header'>
<div>
<img src='data:image/png;base64,{data.CompanyLogoBase64}' class='company-logo' alt='Company Logo'>
<h2>{data.CompanyName}</h2>
<p>{data.CompanyAddress}</p>
</div>
<div class='invoice-details'>
<div class='invoice-number'>Invoice #{data.InvoiceNumber}</div>
<p>Date: {data.InvoiceDate:yyyy-MM-dd}</p>
<p>Due: {data.DueDate:yyyy-MM-dd}</p>
</div>
</div>
")
' Add line items table
html.Append("
<table>
<thead>
<tr>
<th>Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
")
For Each item In data.LineItems
html.Append($"
<tr>
<td>{item.Description}</td>
<td>{item.Quantity}</td>
<td>${item.UnitPrice:F2}</td>
<td>${item.Total:F2}</td>
</tr>
")
Next item
html.Append($"
</tbody>
<tfoot>
<tr class='total-row'>
<td colspan='3'>Total</td>
<td>${data.Total:F2}</td>
</tr>
</tfoot>
</table>
</body>
</html>
")
' Configure renderer for optimal output
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
' Generate PDF with proper base path for assets
Dim pdf = renderer.RenderHtmlAsPdf(html.ToString())
' Add security if needed
pdf.SecuritySettings.UserPassword = data.CustomerEmail
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False
Return pdf
End Function
End Class
IronPDF の HTML レンダリングの主な利点:
- フレックスボックスやグリッドレイアウトを含む完全なCSS3サポート
- Google Fontsとウェブフォントの統合
- JavaScriptチャートライブラリ(Chart.js、D3.js)は完璧にレンダリングされます
- ビューポートコントロールによるレスポンシブデザインのサポート
- 自己完結型ドキュメント用のBase64画像埋め込み
PDFTron (Apryse) を使用した HTML 文字列から PDF への変換
PDFTron の HTML 文字列変換へのアプローチ:
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
public class PdfTronHtmlConverter
{
public static void ConvertHtmlString(string htmlContent, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
// Create HTML2PDF converter instance
HTML2PDF converter = new HTML2PDF();
// Configure page settings
converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
converter.SetLandscape(false);
converter.SetMargins(1.0, 1.0, 1.0, 1.0, HTML2PDF.e_inches);
// Enable images and backgrounds
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
settings.SetJavaScriptDelay(1000); // Limited JS support
// Insert HTML content
converter.InsertFromHtmlString(htmlContent);
// Convert to PDF
if (converter.Convert(doc))
{
// Post-processing options
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
}
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
public class PdfTronHtmlConverter
{
public static void ConvertHtmlString(string htmlContent, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
// Create HTML2PDF converter instance
HTML2PDF converter = new HTML2PDF();
// Configure page settings
converter.SetPaperSize(PrinterMode.PaperSize.e_letter);
converter.SetLandscape(false);
converter.SetMargins(1.0, 1.0, 1.0, 1.0, HTML2PDF.e_inches);
// Enable images and backgrounds
HTML2PDF.WebPageSettings settings = new HTML2PDF.WebPageSettings();
settings.SetPrintBackground(true);
settings.SetLoadImages(true);
settings.SetJavaScriptDelay(1000); // Limited JS support
// Insert HTML content
converter.InsertFromHtmlString(htmlContent);
// Convert to PDF
if (converter.Convert(doc))
{
// Post-processing options
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
}
}
Imports pdftron
Imports pdftron.PDF
Imports pdftron.SDF
Public Class PdfTronHtmlConverter
Public Shared Sub ConvertHtmlString(ByVal htmlContent As String, ByVal outputPath As String)
PDFNet.Initialize("your-license-key")
Using doc As New PDFDoc()
' Create HTML2PDF converter instance
Dim converter As New HTML2PDF()
' Configure page settings
converter.SetPaperSize(PrinterMode.PaperSize.e_letter)
converter.SetLandscape(False)
converter.SetMargins(1.0, 1.0, 1.0, 1.0, HTML2PDF.e_inches)
' Enable images and backgrounds
Dim settings As New HTML2PDF.WebPageSettings()
settings.SetPrintBackground(True)
settings.SetLoadImages(True)
settings.SetJavaScriptDelay(1000) ' Limited JS support
' Insert HTML content
converter.InsertFromHtmlString(htmlContent)
' Convert to PDF
If converter.Convert(doc) Then
' Post-processing options
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized)
End If
End Using
End Sub
End Class
考慮すべき PDFTron HTML の制限:
- 基本的な CSS サポート (高度なレイアウトはありません)
- JavaScript 実行の制限
- フォントの埋め込みには追加の設定が必要です
- シンプルなドキュメントレイアウトに適しています
ASPX ページを PDF に変換するにはどうすればいいですか?
ASPX ページを PDF に変換することは、ASP.NET アプリケーションの一般的な要件です。 IronPDF はネイティブ サポートを提供しますが、PDFTron では回避策が必要です。
IronPDF で ASPX を PDF に変換する
IronPDF は、1 行のコードでシームレスな ASPX 変換を提供します。
using IronPdf;
public partial class InvoicePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Render the current ASPX page as PDF on page load
if (Request.QueryString["pdf"] == "true")
{
// Configure PDF output options
AspxToPdf.RenderThisPageAsPdf(
AspxToPdf.FileBehavior.InBrowser,
"Invoice_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
}
}
protected void ExportToPdfButton_Click(object sender, EventArgs e)
{
// Advanced configuration for ASPX to PDF
IronPdf.AspxToPdf.RenderThisPageAsPdf(
IronPdf.AspxToPdf.FileBehavior.Attachment,
"Invoice.pdf",
new ChromePdfRenderOptions()
{
PaperSize = PdfPaperSize.A4,
MarginTop = 20,
MarginBottom = 20,
CssMediaType = PdfCssMediaType.Print,
EnableJavaScript = true,
CreatePdfFormsFromHtml = true,
FitToPaper = true
});
}
}
using IronPdf;
public partial class InvoicePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Render the current ASPX page as PDF on page load
if (Request.QueryString["pdf"] == "true")
{
// Configure PDF output options
AspxToPdf.RenderThisPageAsPdf(
AspxToPdf.FileBehavior.InBrowser,
"Invoice_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
}
}
protected void ExportToPdfButton_Click(object sender, EventArgs e)
{
// Advanced configuration for ASPX to PDF
IronPdf.AspxToPdf.RenderThisPageAsPdf(
IronPdf.AspxToPdf.FileBehavior.Attachment,
"Invoice.pdf",
new ChromePdfRenderOptions()
{
PaperSize = PdfPaperSize.A4,
MarginTop = 20,
MarginBottom = 20,
CssMediaType = PdfCssMediaType.Print,
EnableJavaScript = true,
CreatePdfFormsFromHtml = true,
FitToPaper = true
});
}
}
Imports IronPdf
Partial Public Class InvoicePage
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
' Render the current ASPX page as PDF on page load
If Request.QueryString("pdf") = "true" Then
' Configure PDF output options
AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.InBrowser, "Invoice_" & DateTime.Now.ToString("yyyyMMdd") & ".pdf")
End If
End Sub
Protected Sub ExportToPdfButton_Click(ByVal sender As Object, ByVal e As EventArgs)
' Advanced configuration for ASPX to PDF
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.Attachment, "Invoice.pdf", New ChromePdfRenderOptions() With {
.PaperSize = PdfPaperSize.A4,
.MarginTop = 20,
.MarginBottom = 20,
.CssMediaType = PdfCssMediaType.Print,
.EnableJavaScript = True,
.CreatePdfFormsFromHtml = True,
.FitToPaper = True
})
End Sub
End Class
レンダリング プロセスをより細かく制御するには:
// In Global.asax.cs or Startup.cs
public static void ConfigureAspxToPdf()
{
// Set global defaults for all ASPX to PDF conversions
AspxToPdf.GlobalSettings.PaperSize = PdfPaperSize.A4;
AspxToPdf.GlobalSettings.PrintHtmlBackgrounds = true;
AspxToPdf.GlobalSettings.EnableJavaScript = true;
AspxToPdf.GlobalSettings.CssMediaType = PdfCssMediaType.Screen;
// Custom headers and footers
AspxToPdf.GlobalSettings.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>{page} of {total-pages}</div>",
Height = 25
};
}
// In Global.asax.cs or Startup.cs
public static void ConfigureAspxToPdf()
{
// Set global defaults for all ASPX to PDF conversions
AspxToPdf.GlobalSettings.PaperSize = PdfPaperSize.A4;
AspxToPdf.GlobalSettings.PrintHtmlBackgrounds = true;
AspxToPdf.GlobalSettings.EnableJavaScript = true;
AspxToPdf.GlobalSettings.CssMediaType = PdfCssMediaType.Screen;
// Custom headers and footers
AspxToPdf.GlobalSettings.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>{page} of {total-pages}</div>",
Height = 25
};
}
' In Global.asax.cs or Startup.cs
Public Shared Sub ConfigureAspxToPdf()
' Set global defaults for all ASPX to PDF conversions
AspxToPdf.GlobalSettings.PaperSize = PdfPaperSize.A4
AspxToPdf.GlobalSettings.PrintHtmlBackgrounds = True
AspxToPdf.GlobalSettings.EnableJavaScript = True
AspxToPdf.GlobalSettings.CssMediaType = PdfCssMediaType.Screen
' Custom headers and footers
AspxToPdf.GlobalSettings.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align: center; font-size: 12px;'>{page} of {total-pages}</div>",
.Height = 25
}
End Sub
IronPDF の ASPX から PDF への機能は以下を保存します:
ViewStateおよびフォーム値- セッション状態データ
- CSS スタイルとレイアウト
- JavaScriptレンダリングのコンテンツ
- マスターページレイアウト
PDFTron による ASPX の代替
PDFTron は直接的な ASPX サポートを提供していないため、間接的なアプローチが必要です。
// Capture ASPX output as HTML, then convert
public void ConvertAspxWithPdfTron()
{
// Render ASPX to string first
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
// Render the page to HTML
this.RenderControl(hw);
string htmlContent = sw.ToString();
// Then use PDFTron's HTML2PDF
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.InsertFromHtmlString(htmlContent);
converter.Convert(doc);
// Send to browser
byte[] pdfBytes = doc.Save(SDFDoc.SaveOptions.e_linearized);
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdfBytes);
Response.End();
}
}
// Capture ASPX output as HTML, then convert
public void ConvertAspxWithPdfTron()
{
// Render ASPX to string first
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
// Render the page to HTML
this.RenderControl(hw);
string htmlContent = sw.ToString();
// Then use PDFTron's HTML2PDF
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
HTML2PDF converter = new HTML2PDF();
converter.InsertFromHtmlString(htmlContent);
converter.Convert(doc);
// Send to browser
byte[] pdfBytes = doc.Save(SDFDoc.SaveOptions.e_linearized);
Response.ContentType = "application/pdf";
Response.BinaryWrite(pdfBytes);
Response.End();
}
}
' Capture ASPX output as HTML, then convert
Public Sub ConvertAspxWithPdfTron()
' Render ASPX to string first
Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
' Render the page to HTML
Me.RenderControl(hw)
Dim htmlContent As String = sw.ToString()
' Then use PDFTron's HTML2PDF
PDFNet.Initialize("your-license-key")
Using doc As New PDFDoc()
Dim converter As New HTML2PDF()
converter.InsertFromHtmlString(htmlContent)
converter.Convert(doc)
' Send to browser
Dim pdfBytes() As Byte = doc.Save(SDFDoc.SaveOptions.e_linearized)
Response.ContentType = "application/pdf"
Response.BinaryWrite(pdfBytes)
Response.End()
End Using
End Sub
画像を PDF に変換するにはどうすればよいですか?
画像から PDF への変換は、ドキュメントのアーカイブやポートフォリオの作成に不可欠です。 どちらのライブラリも、異なるアプローチでこの機能を提供します。
IronPDFで画像をPDFに変換
IronPDF は、効率的なバッチ処理のために専用の ImageToPdfConverter クラスを提供します。
using IronPdf;
using System.IO;
using System.Linq;
public class ImagePdfGenerator
{
public static void CreatePhotoAlbum(string imageFolder, string outputPath)
{
// Get all supported image files
var supportedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg" };
var imageFiles = Directory.GetFiles(imageFolder)
.Where(f => supportedExtensions.Contains(Path.GetExtension(f).ToLower()))
.OrderBy(f => f);
// Convert images to PDF with options
var pdf = ImageToPdfConverter.ImageToPdf(imageFiles, ImageBehavior.FitToPage);
// Add metadata
pdf.MetaData.Title = "Photo Album";
pdf.MetaData.Author = "Photography Department";
pdf.MetaData.CreationDate = DateTime.Now;
// Apply compression for smaller file size
pdf.CompressImages(80); // 80% quality
// Save the PDF
pdf.SaveAs(outputPath);
}
public static void CreateThumbnailCatalog(List<ProductImage> images)
{
var renderer = new ChromePdfRenderer();
// Build HTML with image grid
var html = @"
<html>
<head>
<style>
.image-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
padding: 20px;
}
.image-item {
text-align: center;
}
.image-item img {
max-width: 100%;
height: 200px;
object-fit: cover;
border: 1px solid #ddd;
}
.image-caption {
margin-top: 10px;
font-size: 12px;
}
</style>
</head>
<body>
<h1>Product Catalog</h1>
<div class='image-grid'>";
foreach (var image in images)
{
html += $@"
<div class='image-item'>
<img src='data:image/jpeg;base64,{image.Base64Data}' />
<div class='image-caption'>{image.ProductName}</div>
</div>";
}
html += "</div></body></html>";
// Render with optimal settings for images
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("product-catalog.pdf");
}
}
using IronPdf;
using System.IO;
using System.Linq;
public class ImagePdfGenerator
{
public static void CreatePhotoAlbum(string imageFolder, string outputPath)
{
// Get all supported image files
var supportedExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg" };
var imageFiles = Directory.GetFiles(imageFolder)
.Where(f => supportedExtensions.Contains(Path.GetExtension(f).ToLower()))
.OrderBy(f => f);
// Convert images to PDF with options
var pdf = ImageToPdfConverter.ImageToPdf(imageFiles, ImageBehavior.FitToPage);
// Add metadata
pdf.MetaData.Title = "Photo Album";
pdf.MetaData.Author = "Photography Department";
pdf.MetaData.CreationDate = DateTime.Now;
// Apply compression for smaller file size
pdf.CompressImages(80); // 80% quality
// Save the PDF
pdf.SaveAs(outputPath);
}
public static void CreateThumbnailCatalog(List<ProductImage> images)
{
var renderer = new ChromePdfRenderer();
// Build HTML with image grid
var html = @"
<html>
<head>
<style>
.image-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
padding: 20px;
}
.image-item {
text-align: center;
}
.image-item img {
max-width: 100%;
height: 200px;
object-fit: cover;
border: 1px solid #ddd;
}
.image-caption {
margin-top: 10px;
font-size: 12px;
}
</style>
</head>
<body>
<h1>Product Catalog</h1>
<div class='image-grid'>";
foreach (var image in images)
{
html += $@"
<div class='image-item'>
<img src='data:image/jpeg;base64,{image.Base64Data}' />
<div class='image-caption'>{image.ProductName}</div>
</div>";
}
html += "</div></body></html>";
// Render with optimal settings for images
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("product-catalog.pdf");
}
}
Imports IronPdf
Imports System.IO
Imports System.Linq
Public Class ImagePdfGenerator
Public Shared Sub CreatePhotoAlbum(ByVal imageFolder As String, ByVal outputPath As String)
' Get all supported image files
Dim supportedExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg" }
Dim imageFiles = Directory.GetFiles(imageFolder).Where(Function(f) supportedExtensions.Contains(Path.GetExtension(f).ToLower())).OrderBy(Function(f) f)
' Convert images to PDF with options
Dim pdf = ImageToPdfConverter.ImageToPdf(imageFiles, ImageBehavior.FitToPage)
' Add metadata
pdf.MetaData.Title = "Photo Album"
pdf.MetaData.Author = "Photography Department"
pdf.MetaData.CreationDate = DateTime.Now
' Apply compression for smaller file size
pdf.CompressImages(80) ' 80% quality
' Save the PDF
pdf.SaveAs(outputPath)
End Sub
Public Shared Sub CreateThumbnailCatalog(ByVal images As List(Of ProductImage))
Dim renderer = New ChromePdfRenderer()
' Build HTML with image grid
Dim html = "
<html>
<head>
<style>
.image-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
padding: 20px;
}
.image-item {
text-align: center;
}
.image-item img {
max-width: 100%;
height: 200px;
object-fit: cover;
border: 1px solid #ddd;
}
.image-caption {
margin-top: 10px;
font-size: 12px;
}
</style>
</head>
<body>
<h1>Product Catalog</h1>
<div class='image-grid'>"
For Each image In images
html &= $"
<div class='image-item'>
<img src='data:image/jpeg;base64,{image.Base64Data}' />
<div class='image-caption'>{image.ProductName}</div>
</div>"
Next image
html &= "</div></body></html>"
' Render with optimal settings for images
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("product-catalog.pdf")
End Sub
End Class
高度な画像処理機能:
- ベクター品質を維持したSVGからPDFへの変換
- メモリ最適化によるバッチ処理
- カスタムサイズと位置のオプション
- EXIFデータの保存
PDFTron (Apryse) で画像を PDF に変換
PDFTron は画像処理に変換 API を使用します。
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
public class PdfTronImageConverter
{
public static void ConvertImageToPdf(string imagePath, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
// Use Convert API for image to PDF
pdftron.PDF.Convert.ToPdf(doc, imagePath);
// Additional image processing
PageIterator itr = doc.GetPageIterator();
while (itr.HasNext())
{
Page page = itr.Current();
// Adjust page size to image
Rect crop_box = page.GetCropBox();
page.SetMediaBox(crop_box);
itr.Next();
}
// Save optimized PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
public static void CreateMultiPageImagePdf(string[] imagePaths, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
ElementBuilder builder = new ElementBuilder();
ElementWriter writer = new ElementWriter();
foreach (string imagePath in imagePaths)
{
// Create a new page for each image
Page page = doc.PageCreate();
writer.Begin(page);
// Add image to page
Image img = Image.Create(doc, imagePath);
Element element = builder.CreateImage(img, 0, 0, 612, 792);
writer.WritePlacedElement(element);
writer.End();
doc.PagePushBack(page);
}
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
}
using pdftron;
using pdftron.PDF;
using pdftron.SDF;
public class PdfTronImageConverter
{
public static void ConvertImageToPdf(string imagePath, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
// Use Convert API for image to PDF
pdftron.PDF.Convert.ToPdf(doc, imagePath);
// Additional image processing
PageIterator itr = doc.GetPageIterator();
while (itr.HasNext())
{
Page page = itr.Current();
// Adjust page size to image
Rect crop_box = page.GetCropBox();
page.SetMediaBox(crop_box);
itr.Next();
}
// Save optimized PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
public static void CreateMultiPageImagePdf(string[] imagePaths, string outputPath)
{
PDFNet.Initialize("your-license-key");
using (PDFDoc doc = new PDFDoc())
{
ElementBuilder builder = new ElementBuilder();
ElementWriter writer = new ElementWriter();
foreach (string imagePath in imagePaths)
{
// Create a new page for each image
Page page = doc.PageCreate();
writer.Begin(page);
// Add image to page
Image img = Image.Create(doc, imagePath);
Element element = builder.CreateImage(img, 0, 0, 612, 792);
writer.WritePlacedElement(element);
writer.End();
doc.PagePushBack(page);
}
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized);
}
}
}
Imports pdftron
Imports pdftron.PDF
Imports pdftron.SDF
Public Class PdfTronImageConverter
Public Shared Sub ConvertImageToPdf(ByVal imagePath As String, ByVal outputPath As String)
PDFNet.Initialize("your-license-key")
Using doc As New PDFDoc()
' Use Convert API for image to PDF
pdftron.PDF.Convert.ToPdf(doc, imagePath)
' Additional image processing
Dim itr As PageIterator = doc.GetPageIterator()
Do While itr.HasNext()
Dim page As Page = itr.Current()
' Adjust page size to image
Dim crop_box As Rect = page.GetCropBox()
page.SetMediaBox(crop_box)
itr.Next()
Loop
' Save optimized PDF
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized)
End Using
End Sub
Public Shared Sub CreateMultiPageImagePdf(ByVal imagePaths() As String, ByVal outputPath As String)
PDFNet.Initialize("your-license-key")
Using doc As New PDFDoc()
Dim builder As New ElementBuilder()
Dim writer As New ElementWriter()
For Each imagePath As String In imagePaths
' Create a new page for each image
Dim page As Page = doc.PageCreate()
writer.Begin(page)
' Add image to page
Dim img As Image = Image.Create(doc, imagePath)
Dim element As Element = builder.CreateImage(img, 0, 0, 612, 792)
writer.WritePlacedElement(element)
writer.End()
doc.PagePushBack(page)
Next imagePath
doc.Save(outputPath, SDFDoc.SaveOptions.e_linearized)
End Using
End Sub
End Class
ライセンスのオプションとコストは何ですか?
ライセンスを理解することは、予算編成とコンプライアンスにとって非常に重要です。 2 つのライブラリの価格モデルは大きく異なります。
IronPDFライセンス
IronPDF には、$999 から $2,999 までの 3 つの価格エディションがあります。 IronPDF の無料トライアルもご利用いただけます。 IronPDF は透明性のある公開価格設定を提供しています (2025 年現在)。
ライセンス層: -ライトライセンス: $999
- 1年間の更新とサポート
- 1か所
- 1プロジェクト
- 個人開発者や小規模プロジェクトに最適
-プラスライセンス: $1,499
- 3か所
- 3か所
- 3プロジェクト
- 小規模チームに最適
-プロフェッショナルライセンス: $2,999
- 配布権なし
- 10か所
- 10プロジェクト
- 成長中のチームに最適
-無制限ライセンス:カスタム価格
- 無制限の開発者
- 無制限のロケーション
- 無制限のプロジェクト
追加オプション:
- ロイヤリティフリーの再配布: +$2,999 (1回限り)
- SaaS/OEMライセンスが利用可能
- Iron Suiteバンドル: 2つの価格で10個の製品を入手
すべてのチーム ライセンスは譲渡不可であり、組織または代理店/クライアント関係外でのライセンスの共有は禁止されています。
PDFTron (Apryse) ライセンス
PDFTron のライセンスは見積もりベースであり、価格は公表されていません。 ユーザーのフィードバックと業界レポートに基づく:
推定価格帯:
- 中小企業: 年間5,000~15,000ドル
- エンタープライズ: 年間30,000~100,000ドル以上
- 追加モジュールには別途ライセンスが必要です
価格の透明性は PDFTRON の大きな欠点です。 すべてがアドオンであり、特定のライセンス条件と契約が必要です。 ユーザーの報告:
- PDFTRON に 6,500 ドルを投資したにもかかわらず、その製品は宣伝どおりに動作せず、何も得られず、製品のクリーンアップ作業は大変なものになってしまいました。
- 複雑なライセンス交渉が必要
- モジュールごとの価格設定により総コストが増加
- 返金ポリシーは限定的
主な違い:
- IronPDF: 永久ライセンス、一回払い
- PDFTron: 多くの場合、サブスクリプションベースまたは年会費制
- IronPDF: すべての機能が基本ライセンスに含まれています
- PDFTron: 有料アドオンによるコア機能
サポート オプションを比較するとどうなりますか?
開発者のサポートは、プロジェクトのタイムラインを左右します。 各ベンダーが顧客サポートにどのように取り組んでいるかをご紹介します。
IronPDF サポート
IronPDF にはすべてのライセンスにプロフェッショナル サポートが含まれています。
- メールによる24時間365日のエンジニアリングサポート
- 開発チームとの直接アクセス
- 通常の応答時間: 24~48時間 -包括的なドキュメント -活発なコミュニティフォーラム
- ビデオチュートリアルとコード例
IronPDF ライブラリは、Azure WebApps、Functions、WebJobs で動作します。 これは Linux 版と Windows 版の両方で動作しますが、Windows 版の Functions と WebApps の方がテストがはるかに良く、インストールも簡単なのでお勧めです。
PDFTron (Apryse) サポート
PDFTron のサポートはライセンス レベルによって異なります。
- PDFTron のコストは高いです。 当社のビジネスにとっての重要性はコストを正当化しますが、この製品を他の PDF Web ソリューションと比較すると、それは間違いなく当社にとっての障害でした。
- 基本ライセンスのフォーラムベースのサポート
- 有料サポートプランあり
- 場合によってはサポートが不足し、開発者が自力で解決しなければならないこともあります。
- 応答時間はサポートレベルによって異なります
パフォーマンス特性は何ですか?
パフォーマンスはユーザーエクスペリエンスとサーバーコストに影響します。 実際のパフォーマンスデータを調べてみましょう。
IronPDF パフォーマンス
最近の改善により、IronPDF のパフォーマンスが大幅に向上しました。
// Optimized batch processing example
public async Task BatchConvertWithPerformanceMonitoring()
{
var renderer = new ChromePdfRenderer();
// Configure for performance
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.RenderDelay = 0; // No delay for static content
renderer.RenderingOptions.Timeout = 30; // 30 second timeout
// Enable parallel processing
var tasks = new List<Task<PdfDocument>>();
var urls = GetUrlsToConvert();
// Process in parallel with throttling
using (var semaphore = new SemaphoreSlim(4)) // Max 4 concurrent
{
foreach (var url in urls)
{
await semaphore.WaitAsync();
tasks.Add(Task.Run(async () =>
{
try
{
return await renderer.RenderUrlAsPdfAsync(url);
}
finally
{
semaphore.Release();
}
}));
}
var results = await Task.WhenAll(tasks);
// Merge results if needed
var merged = PdfDocument.Merge(results);
merged.SaveAs("batch-output.pdf");
}
}
// Optimized batch processing example
public async Task BatchConvertWithPerformanceMonitoring()
{
var renderer = new ChromePdfRenderer();
// Configure for performance
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.RenderDelay = 0; // No delay for static content
renderer.RenderingOptions.Timeout = 30; // 30 second timeout
// Enable parallel processing
var tasks = new List<Task<PdfDocument>>();
var urls = GetUrlsToConvert();
// Process in parallel with throttling
using (var semaphore = new SemaphoreSlim(4)) // Max 4 concurrent
{
foreach (var url in urls)
{
await semaphore.WaitAsync();
tasks.Add(Task.Run(async () =>
{
try
{
return await renderer.RenderUrlAsPdfAsync(url);
}
finally
{
semaphore.Release();
}
}));
}
var results = await Task.WhenAll(tasks);
// Merge results if needed
var merged = PdfDocument.Merge(results);
merged.SaveAs("batch-output.pdf");
}
}
' Optimized batch processing example
Public Async Function BatchConvertWithPerformanceMonitoring() As Task
Dim renderer = New ChromePdfRenderer()
' Configure for performance
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.RenderDelay = 0 ' No delay for static content
renderer.RenderingOptions.Timeout = 30 ' 30 second timeout
' Enable parallel processing
Dim tasks = New List(Of Task(Of PdfDocument))()
Dim urls = GetUrlsToConvert()
' Process in parallel with throttling
Using semaphore = New SemaphoreSlim(4) ' Max 4 concurrent
For Each url In urls
Await semaphore.WaitAsync()
tasks.Add(Task.Run(Async Function()
Try
Return Await renderer.RenderUrlAsPdfAsync(url)
Finally
semaphore.Release()
End Try
End Function))
Next url
Dim results = Await Task.WhenAll(tasks)
' Merge results if needed
Dim merged = PdfDocument.Merge(results)
merged.SaveAs("batch-output.pdf")
End Using
End Function
実稼働環境からのパフォーマンス メトリック:
- シンプルなHTML: 200~400ミリ秒
- CSS/JS を使用した複雑な HTML: 800~1200 ミリ秒
- IronPDF には、 IronPDF.com/examples /async に記載されているようなレンダリング メソッドの非同期バリアントがあります。 私のユースケースでは、
Parallel.ForEachを使用することが、HTML から PDF へのバッチレンダリングに最もパフォーマンスの高い戦略でした。
PDFTron (Apryse) のパフォーマンス
PDFTron は一般的に、単純な変換ではより高速な生のパフォーマンスを提供します。
- 基本的なHTML: 100~300ミリ秒
- Officeドキュメント: 500~1000ミリ秒
- メモリフットプリントの低減
- 大量のシンプルな文書に最適
ただし、ユーザーからは複雑なシナリオで問題が発生するという報告があります。
- バグは時々発生します。中には、QAテストで発見できたはずの、かなり深刻なバグが発生することもあります。 最終的に修正されるまでにはしばらく時間がかかる場合があります。
最新の CSS フレームワークと Bootstrap のサポート
エンタープライズ アプリケーションで Bootstrap、Tailwind、Foundation などの最新の CSS フレームワークが採用されるケースが増えているため、これらのフレームワークを正確に PDF に変換する機能が PDF ライブラリの重要な選択基準になっています。
IronPDF: Chromiumベースのフレームワークを完全サポート
IronPDF の Chrome V8 レンダリング エンジンは、すべての最新の CSS フレームワークと Web 標準を包括的にサポートします。
- Bootstrap 5:レスポンシブなユーティリティをすべて備えたフレックスボックスとCSSグリッドの完全なサポート
- Bootstrap 4:カードコンポーネント、ナビゲーションシステム、フォームレイアウトとの完全な互換性
- Tailwind CSS:すべてのユーティリティクラス、レスポンシブ修飾子、JITコンパイルパターン
- Foundation:完全なグリッドシステムとコンポーネントライブラリのサポート -最新の CSS3: Flexbox、CSS グリッド、CSS 変数、アニメーション、変換、トランジション
- JavaScriptフレームワーク: React、Vue、Angular コンポーネントのレンダリングと完全なインタラクティブ性のサポート
運用検証: Bootstrap ホームページと公式テンプレートは、98% 以上のブラウザー忠実度で変換されます。
コード例: データテーブルを含むエンタープライズダッシュボード
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapDashboard = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<h1>Sales Dashboard - Q1 2025</h1>
<span class='badge bg-success fs-5'>+15.3% YoY</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Total Revenue</h6>
<h2 class='text-primary'>$1.2M</h2>
<small class='text-success'>↑ 12%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>New Customers</h6>
<h2 class='text-info'>1,847</h2>
<small class='text-success'>↑ 8%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Avg Order Value</h6>
<h2 class='text-warning'>$649</h2>
<small class='text-danger'>↓ 3%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Conversion Rate</h6>
<h2 class='text-success'>3.2%</h2>
<small class='text-success'>↑ 0.4%</small>
</div>
</div>
</div>
</div>
<div class='card'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Top Products by Revenue</h5>
</div>
<div class='card-body p-0'>
<table class='table table-striped table-hover mb-0'>
<thead class='table-light'>
<tr>
<th>Product</th>
<th>Category</th>
<th>Units Sold</th>
<th class='text-end'>Revenue</th>
<th class='text-end'>Growth</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Professional License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>1,234</td>
<td class='text-end'>$369,000</td>
<td class='text-end'><span class='badge bg-success'>+18%</span></td>
</tr>
<tr>
<td><strong>Plus License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>2,891</td>
<td class='text-end'>$289,000</td>
<td class='text-end'><span class='badge bg-success'>+15%</span></td>
</tr>
<tr>
<td><strong>Support Package</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>892</td>
<td class='text-end'>$178,000</td>
<td class='text-end'><span class='badge bg-success'>+22%</span></td>
</tr>
<tr>
<td><strong>Training Program</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>456</td>
<td class='text-end'>$91,000</td>
<td class='text-end'><span class='badge bg-warning'>+5%</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapDashboard);
pdf.SaveAs("sales-dashboard.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapDashboard = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<h1>Sales Dashboard - Q1 2025</h1>
<span class='badge bg-success fs-5'>+15.3% YoY</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Total Revenue</h6>
<h2 class='text-primary'>$1.2M</h2>
<small class='text-success'>↑ 12%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>New Customers</h6>
<h2 class='text-info'>1,847</h2>
<small class='text-success'>↑ 8%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Avg Order Value</h6>
<h2 class='text-warning'>$649</h2>
<small class='text-danger'>↓ 3%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Conversion Rate</h6>
<h2 class='text-success'>3.2%</h2>
<small class='text-success'>↑ 0.4%</small>
</div>
</div>
</div>
</div>
<div class='card'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Top Products by Revenue</h5>
</div>
<div class='card-body p-0'>
<table class='table table-striped table-hover mb-0'>
<thead class='table-light'>
<tr>
<th>Product</th>
<th>Category</th>
<th>Units Sold</th>
<th class='text-end'>Revenue</th>
<th class='text-end'>Growth</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Professional License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>1,234</td>
<td class='text-end'>$369,000</td>
<td class='text-end'><span class='badge bg-success'>+18%</span></td>
</tr>
<tr>
<td><strong>Plus License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>2,891</td>
<td class='text-end'>$289,000</td>
<td class='text-end'><span class='badge bg-success'>+15%</span></td>
</tr>
<tr>
<td><strong>Support Package</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>892</td>
<td class='text-end'>$178,000</td>
<td class='text-end'><span class='badge bg-success'>+22%</span></td>
</tr>
<tr>
<td><strong>Training Program</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>456</td>
<td class='text-end'>$91,000</td>
<td class='text-end'><span class='badge bg-warning'>+5%</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapDashboard);
pdf.SaveAs("sales-dashboard.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim bootstrapDashboard As String = "
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<h1>Sales Dashboard - Q1 2025</h1>
<span class='badge bg-success fs-5'>+15.3% YoY</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Total Revenue</h6>
<h2 class='text-primary'>$1.2M</h2>
<small class='text-success'>↑ 12%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>New Customers</h6>
<h2 class='text-info'>1,847</h2>
<small class='text-success'>↑ 8%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Avg Order Value</h6>
<h2 class='text-warning'>$649</h2>
<small class='text-danger'>↓ 3%</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h6 class='text-muted'>Conversion Rate</h6>
<h2 class='text-success'>3.2%</h2>
<small class='text-success'>↑ 0.4%</small>
</div>
</div>
</div>
</div>
<div class='card'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Top Products by Revenue</h5>
</div>
<div class='card-body p-0'>
<table class='table table-striped table-hover mb-0'>
<thead class='table-light'>
<tr>
<th>Product</th>
<th>Category</th>
<th>Units Sold</th>
<th class='text-end'>Revenue</th>
<th class='text-end'>Growth</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Professional License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>1,234</td>
<td class='text-end'>$369,000</td>
<td class='text-end'><span class='badge bg-success'>+18%</span></td>
</tr>
<tr>
<td><strong>Plus License</strong></td>
<td><span class='badge bg-primary'>Software</span></td>
<td>2,891</td>
<td class='text-end'>$289,000</td>
<td class='text-end'><span class='badge bg-success'>+15%</span></td>
</tr>
<tr>
<td><strong>Support Package</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>892</td>
<td class='text-end'>$178,000</td>
<td class='text-end'><span class='badge bg-success'>+22%</span></td>
</tr>
<tr>
<td><strong>Training Program</strong></td>
<td><span class='badge bg-info'>Services</span></td>
<td>456</td>
<td class='text-end'>$91,000</td>
<td class='text-end'><span class='badge bg-warning'>+5%</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapDashboard)
pdf.SaveAs("sales-dashboard.pdf")
出力: Bootstrap の flexbox メトリック カード、レスポンシブ グリッド レイアウト、スタイル設定されたデータ テーブルを備えたプロフェッショナルなエンタープライズ ダッシュボード。すべてが PDF で完璧な忠実度でレンダリングされます。
PDFTron (Apryse): フレームワークの制限付き HTML2PDF モジュール
PDFTron の HTML から PDF への変換は、HTML2PDF モジュールを通じて提供されます。このモジュールは、最新の CSS フレームワークに特定の制限があるカスタム レンダリング エンジンを使用します。
-カスタムエンジン: Chromiumベースではないため、CSS3のサポートは包括的ではなく選択的です
- Flexbox サポート:部分的な実装のため、Bootstrap 4/5 の flexbox レイアウトが正しくレンダリングされない可能性があります
- CSS グリッド: CSS グリッドレイアウト仕様の限定的なサポート
- JavaScript の制限:フルブラウザエンジンに比べてJavaScript の実行が制限されています
- Bootstrap 3:テーブルベースのレイアウトのため、Bootstrap 4/5 よりも一般的にうまく機能します。 -フレームワークのテストが必要:複雑な Bootstrap コンポーネントには、広範なテストと潜在的な回避策が必要です。
開発者の報告によると、Bootstrap を使用する PDFTron ユーザーは次のような問題に遭遇します。
- Flexbox ベースのナビゲーション バーのレンダリングで配置の問題が発生している
- CSS 調整を必要とするカードデッキとグリッドシステム
- レスポンシブユーティリティがPDF出力で考慮されない
- Bootstrapコンポーネントを簡素化するか、フォールバックCSSを使用する必要がある
エンタープライズでの考慮事項:最新の Bootstrap バージョン (4 以上) で構築されたアプリケーションの場合、PDFTron ではレイアウト変換を処理するために大幅な追加開発作業が必要になる可能性があり、他のパフォーマンス上の利点が相殺される可能性があります。 カスタム エンジン アプローチでは、実際のブラウザーと同じレンダリング忠実度は得られません。
包括的な Bootstrap フレームワークのサポートとテスト ガイダンスについては、" Bootstrap & Flexbox CSS ガイド"を参照してください。
各ライブラリはいつ選択すればよいですか?
正しい選択をするには、特定の要件と制約に応じて異なります。
IronPDFを選ぶとき:
HTML/CSSの忠実度は重要
- 複雑なレイアウトを備えた最新のWebアプリケーション
- JavaScriptを多用したコンテンツ
- 保存が必要なレスポンシブデザイン
迅速な開発が優先
- シンプルなAPIにより開発時間を短縮 -豊富なコード例
- 学習曲線が最小限
予算の透明性は重要
- 公開された価格設定により正確な予算策定が可能
- 予期せぬ費用や隠れた料金はありません
- 基本ライセンスのすべての機能が含まれています
特定の機能が必要な場合
- ASPXからPDFへの変換
- Azureとクラウドの最適化
- 包括的なHTML/CSS/JSサポート
PDFTron (Apryse) を選択する場合:
エンタープライズドキュメントワークフロー
- XFAサポートによる複雑なフォーム処理
- CADファイル変換(DWG、DXF)
- 高度なOfficeドキュメント処理
機能よりもパフォーマンス
- 大量のシンプルな文書処理
- メモリ要件が低い
- 基本的なHTML変換のニーズ
特殊な要件
- 組み込みのドキュメントビューアコンポーネント
- 豊富な注釈タイプ(30種類以上)
- レガシーシステム統合
大規模エンタープライズ環境
- 専用サポート契約
- カスタム機能の開発
- コンプライアンス認証
要約と結論
IronPDF と PDFTron (Apryse) はどちらも優れた PDF ライブラリですが、それぞれ異なる市場セグメントとユースケースに対応しています。
IronPDF は次の点で優れています:
- 最新のウェブテクノロジーのサポート(HTML5、CSS3、JavaScript)
- 開発者に優しいAPI設計
- 透明性があり、手頃な価格
- 迅速なアプリケーション開発
- クラウドとコンテナ化されたデプロイメント
PDFTron (Apryse) の強みは次のとおりです。
- エンタープライズドキュメントワークフロー
- CADおよび特殊形式のサポート
- リソース消費の削減
- 豊富な注釈機能
- レガシーシステムの互換性
最新のアプリケーションを構築するほとんどの .NET 開発者にとって、IronPDF は機能、使いやすさ、価値の最適な組み合わせを提供します。 Chrome ベースのレンダリング エンジンにより、ピクセル単位での HTML から PDF への変換が保証され、わかりやすい API により開発が加速されます。
PDFTron は、CAD 変換、複雑なフォーム処理、または従来のドキュメント形式での作業に関する特定の要件を持つ企業にとって、依然として有効です。 ただし、価格の透明性とモジュール型のライセンス構造が欠如しているため、総コストが大幅に増加する可能性があります。
はじめに
IronPDF をお試しください: -無料トライアルをダウンロード -ドキュメントを見る -コード例を参照する
PDFTronを探索: -評価をリクエストする -開発者ポータルにアクセス
決定を下す前に、必ず特定のユースケースで両方のオプションを徹底的に評価してください。 技術的な機能に加えて、長期的なコスト、サポート品質、機能ロードマップなどの要素を考慮してください。
よくある質問
C# で HTML を PDF に変換するにはどうすればいいですか?
IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。
IronPDFとPDFTronのHTMLからPDFへの変換におけるパフォーマンスの違いは何ですか?
IronPDFはChromeベースのエンジンにより、複雑なWebコンテンツの優れたレンダリングを提供し、JavaScriptとCSS3をより良くサポートします。PDFTronはシンプルなHTMLの変換においては速いですが、複雑なコンテンツの処理は効果的ではないかもしれません。
IronPDFとPDFTronのライセンスオプションは何ですか?
IronPDFはすべての機能が含まれた透明で永続的なライセンスを749ドルから提供します。PDFTronはカスタム見積もりが必要で、ライセンスは年間5,000ドルから100,000ドル以上になる可能性があります。
これらのライブラリを使用してASPXページをPDFに変換することは可能ですか?
はい、IronPDFはAspxToPdf.RenderThisPageAsPdfメソッドを使用してコード1行でASPXページをPDFに変換できます。PDFTronはASPXページ変換を直接サポートしていません。
クラウド環境、例えばAzureでどちらのライブラリがより適していますか?
IronPDFはAzureやAWSを含むクラウド環境に最適化されており、FunctionsとWebAppsでシームレスに動作します。PDFTronは最適なクラウド展開のために追加の構成が必要な場合があります。
IronPDFまたはPDFTronで入力可能なPDFフォームを作成することはできますか?
はい、両方のライブラリで入力可能なPDFフォームの作成をサポートしています。IronPDFはHTMLフォームの自動変換にCreatePdfFormsFromHtmlを使用します。PDFTronは豊富なフォームフィールドタイプを提供しますが、より複雑な統合が必要です。
IronPDFとPDFTronのユーザーにはどのようなサポートオプションがありますか?
IronPDFは、開発者への直接アクセスと、返信時間が24-48時間の24/5エンジニアリングサポートを提供しています。PDFTronのサポートオプションはライセンスのティアに基づいて異なり、基本的なフォーラムサポートと有料の直接アシスタンスがあります。
IronPDFとPDFTronは、パスワード保護されたWebサイトの処理でどのように比較されますか?
IronPDFはChromeHttpLoginCredentialsを通じてログインフォームやHTTP認証を処理するための認証をサポートしていますが、PDFTronはこの機能のサポートが限られています。



