製品比較 Accusoft Prizmdoc PDFビューアーチュートリアルと比較 Curtis Chau 更新日:8月 20, 2025 Download IronPDF NuGet Download テキストの検索と置換 テキストと画像のスタンプ Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article Accusoft PDF ViewerはHTMLからPDFへの変換機能やその他のPDF編集・操作タスクを.NET向けに提供します。 IronPDFはこれらのタスクをプログラムで実行し、C#プロジェクトでの時間と労力を節約します。 二つを比較して、プロジェクトに最適なものを見つけましょう。 class="learnn-how-section"> class="row"> class="col-sm-6"> IronPDFとAccusoft PDF Viewerを比較 HTMLをPDFに変換 PDFにヘッダーとフッターを設定 PDFを画像ファイルに変換 ライセンス、無料試用オプションなどを比較 class="col-sm-6"> class="download-card"> class="tutorial-segment-title">概観 IronPDFについて IronPDFはC#のHTMLからPDFへのライブラリです。 エンジニアがHTML文字列、Webページ、URLなどからPDFファイルを作成するタスクを実行したり、ウォーターマーク、ブックマーク、ヘッダーとフッターなどのプロパティを設定することができます。複数のPDFファイルを一つに統合したり、PDFページを画像に、または逆に変換することもできます。 開発には無料で、プロジェクトをライブにするための30日間のデプロイ試用が提供されます。 You can download a file project from this link. Accusoft PrizmDoc Viewerについて PrizmDoc ViewerはPDFファイルを操作し、他の形式にリモートで変換するためのREST APIです。 PrizmDocは100以上の異なるファイル形式をPDFに、またPDFをPNG、JPG、TIFF、SVGの形式に変換できます。 アプリケーションに様々な種類の電子署名オプションを含めるためにも使用できます。 比較表 IronPDF PrizmDoc Viewer PDFファイルをプログラムで操作します。 PDFファイルをプログラムで操作します。 .NET CoreをWindows、Mac、Linuxでサポート。 Windows、Mac、Linuxを用いる.NET Coreをサポート。 ローカルで動作します ドキュメントをリモートサーバーに送信します。 非同期プログラミングを使用せずに作業が可能。 System.Threading.Tasksを用いた非同期プログラミングを必須とします。 IronPDFをシステムにインストールするとオフラインでも容易に作業可能。 PrizmDoc Viewerサーバー(クラウドホストまたはセルフホスト)にリクエストを送信するためにインターネット接続が必須です。 多くの事前定義関数を提供。 いくつかの事前定義関数を提供。 簡単に短いコード行数で実行可能。 多くのコード行数を必要とすることが多いです。 各ライセンスプランでプロジェクト毎に無制限の変換。 各クラウドホストライセンスプランでは取引数が制限されています。 開発用は無期限で無料。 試用では300件のみ。 二つインストールしてコードを比較しましょう。 class="tutorial-segment-title">ステップ1: インストール 1. IronPDFライブラリのインストール プロジェクトにIronPDFをインストールする方法は2つあり、採用するもので違いはありません。 1.1. IronPDF DLLのダウンロード IronPDF.dllをダウンロードし、プロジェクトに参照を追加します。 これにより、IronPdf名前空間に簡単にアクセスできます。 using IronPdf; using IronPdf; Imports IronPdf $vbLabelText $csharpLabel これで、IronPDFの提供する機能やクラスに簡単にアクセスすることができます。 1.2 NuGetパッケージマネージャーを介してインストール パッケージマネージャコンソールを使っている場合: パッケージマネージャコンソールを使っている場合、次のコマンドを実行します: Install-Package IronPdf ソリューションのパッケージの管理: NuGetパッケージマネージャーのGUIを使用している場合、検索バーでIronPDFを検索してインストールします。 AccusoftからPrizmDoc Viewerをインストール PrizmDoc Viewerには2つの部分があり、1つはRestful APIとしてのサーバー側のPrizmDoc Serverです。 もう1つはプロジェクト側で、このAPIを叩いてレスポンスを取得します。 PrizmDoc Serverにアクセス 名前から見てわかるように、サーバー側アプリケーションで、ドキュメントをリクエスト(入力)として取得し、PDFファイルに変換し、クライアントにレスポンス(出力)として送ります。 製品の技術的ハートであり、ドキュメント処理と変換エンジンです。プログラム構造や技術が同じため、採用方法に違いはありませんが、以下の2通りの方法で使用できます: セルフホスト: このオプションでは、自分のサーバーを用意する必要があり、PrizmDoc Serverをダウンロードしてインストールできます。 WindowsへPrizmDoc Serverをインストールする方法を参照。 注意: 最小32GBのRAMと4コアのCPUが必要で、それに満たない場合は悪い体験をする可能性があります。 クラウドホスト: PrizmDoc Viewerのクラウドベースサービスで、サーバーを用意する必要はありません。 これを比較に使用します。 アカウントを作成して、ホームページを開きます。 APIキーメニューからAPIキーをコピーし、後ほど使用方法を確認します。 最初に、PrizmDoc Viewerを使用してドキュメントをPDFファイルに変換する基本的な構造を見て、C#コンソールアプリケーションを使ってAccusoftサーバーと直接対話します。 注意: 次の例は、PrizmDocがPDFファイルをどう扱うかの概念理解のためだけのものです。 少し長いですが、例をスキップして直接比較に移動しても問題ありません。 Accusoftの動作構造 この例では、myWebpage.htmlをsample.pdfファイルに変換します。 注意: プロジェクトにNewtonsoft.Jsonライブラリをインストールして、その参照を追加する必要があります。 まず、プロジェクトに以下のライブラリを追加します: using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager Imports System Imports System.IO Imports System.Net Imports System.Text Imports System.Threading.Tasks Imports Newtonsoft.Json.Linq ' Install Newtonsoft.Json via NuGet Package Manager $vbLabelText $csharpLabel 次に、Accusoft API Keyという公開変数を作成し、そこにAPIキーを次のように貼り付けます。 static string ApiKey = "Your-API-KEY"; static string ApiKey = "Your-API-KEY"; Private Shared ApiKey As String = "Your-API-KEY" $vbLabelText $csharpLabel PrizmDoc Viewerを使ってPDFファイルを扱うためには3ステップがあります: PrizmDocサーバーへファイルをアップロードします。 アップロードされたファイルを変換します。 PrizmDocサーバーから変換されたファイルをダウンロードします。 各ステップに対し、別々の関数を作成します。 static void Main(string[] args) { //---Upload file to Server--- JObject uploadResults = UploadToServer("myWebpage.html").Result; string fileID = (string)uploadResults.SelectToken("fileId"); string affinityToken = (string)uploadResults.SelectToken("affinityToken"); //---Convert the uploaded file to PDF--- JObject convertResults = Convert(affinityToken, fileID).Result; string processId = (string)convertResults.SelectToken("processId"); affinityToken = (string)convertResults.SelectToken("affinityToken"); //---Check the status that conversion is completed--- JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result; string convertStatus = (string)convertStatusResults.SelectToken("state"); //---Continuously checking whether conversion completed--- while (!(convertStatus.Equals("complete"))) { System.Threading.Thread.Sleep(30000); convertStatusResults = ConvertStatus(processId, affinityToken).Result; convertStatus = (string)convertStatusResults.SelectToken("state"); } //---Download the converted file from server--- string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId"); DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait(); Console.WriteLine("PDF file created successfully...!"); Console.ReadKey(); } static void Main(string[] args) { //---Upload file to Server--- JObject uploadResults = UploadToServer("myWebpage.html").Result; string fileID = (string)uploadResults.SelectToken("fileId"); string affinityToken = (string)uploadResults.SelectToken("affinityToken"); //---Convert the uploaded file to PDF--- JObject convertResults = Convert(affinityToken, fileID).Result; string processId = (string)convertResults.SelectToken("processId"); affinityToken = (string)convertResults.SelectToken("affinityToken"); //---Check the status that conversion is completed--- JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result; string convertStatus = (string)convertStatusResults.SelectToken("state"); //---Continuously checking whether conversion completed--- while (!(convertStatus.Equals("complete"))) { System.Threading.Thread.Sleep(30000); convertStatusResults = ConvertStatus(processId, affinityToken).Result; convertStatus = (string)convertStatusResults.SelectToken("state"); } //---Download the converted file from server--- string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId"); DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait(); Console.WriteLine("PDF file created successfully...!"); Console.ReadKey(); } Shared Sub Main(ByVal args() As String) '---Upload file to Server--- Dim uploadResults As JObject = UploadToServer("myWebpage.html").Result Dim fileID As String = CStr(uploadResults.SelectToken("fileId")) Dim affinityToken As String = CStr(uploadResults.SelectToken("affinityToken")) '---Convert the uploaded file to PDF--- Dim convertResults As JObject = Convert(affinityToken, fileID).Result Dim processId As String = CStr(convertResults.SelectToken("processId")) affinityToken = CStr(convertResults.SelectToken("affinityToken")) '---Check the status that conversion is completed--- Dim convertStatusResults As JObject = ConvertStatus(processId, affinityToken).Result Dim convertStatus As String = CStr(convertStatusResults.SelectToken("state")) '---Continuously checking whether conversion completed--- Do While Not (convertStatus.Equals("complete")) System.Threading.Thread.Sleep(30000) convertStatusResults = ConvertStatus(processId, affinityToken).Result convertStatus = CStr(convertStatusResults.SelectToken("state")) Loop '---Download the converted file from server--- Dim newFileID As String = CStr(convertStatusResults.SelectToken("output.results[0].fileId")) DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait() Console.WriteLine("PDF file created successfully...!") Console.ReadKey() End Sub $vbLabelText $csharpLabel 1. サーバーへのファイルのアップロード: public static async Task<JObject> UploadToServer(string fileToUpload) { FileInfo input = new FileInfo(fileToUpload); if (input == null) { throw new ArgumentException("Missing parameter input", nameof(input)); } var fileName = input.Name; var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile"); using (var client = new WebClient()) { client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Content-Type", "application/octet-stream"); using (var reader = new BinaryReader(input.OpenRead())) { var data = reader.ReadBytes((int)reader.BaseStream.Length); var results = await client.UploadDataTaskAsync(endpoint, "POST", data); string getResult = Encoding.ASCII.GetString(results); return JObject.Parse(getResult); } } } public static async Task<JObject> UploadToServer(string fileToUpload) { FileInfo input = new FileInfo(fileToUpload); if (input == null) { throw new ArgumentException("Missing parameter input", nameof(input)); } var fileName = input.Name; var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile"); using (var client = new WebClient()) { client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Content-Type", "application/octet-stream"); using (var reader = new BinaryReader(input.OpenRead())) { var data = reader.ReadBytes((int)reader.BaseStream.Length); var results = await client.UploadDataTaskAsync(endpoint, "POST", data); string getResult = Encoding.ASCII.GetString(results); return JObject.Parse(getResult); } } } Public Shared Async Function UploadToServer(ByVal fileToUpload As String) As Task(Of JObject) Dim input As New FileInfo(fileToUpload) If input Is Nothing Then Throw New ArgumentException("Missing parameter input", NameOf(input)) End If Dim fileName = input.Name Dim endpoint = New Uri("https://api.accusoft.com/PCCIS/V1/WorkFile") Using client = New WebClient() client.Headers.Add("acs-api-key", ApiKey) client.Headers.Add("Content-Type", "application/octet-stream") Using reader = New BinaryReader(input.OpenRead()) Dim data = reader.ReadBytes(CInt(reader.BaseStream.Length)) Dim results = Await client.UploadDataTaskAsync(endpoint, "POST", data) Dim getResult As String = Encoding.ASCII.GetString(results) Return JObject.Parse(getResult) End Using End Using End Function $vbLabelText $csharpLabel 2. アップロードされたファイルをPDFに変換: public static async Task<JObject> Convert(string affinityToken, string fileID) { var endpoint = new Uri("https://api.accusoft.com/v2/contentConverters"); using (var client = new WebClient()) { client.Headers.Add("Content-Type", "application/json"); client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); JObject myJson = new JObject( new JProperty("input", new JObject( new JProperty("sources", new JArray( new JObject( new JProperty("fileId", fileID) ) ) ), new JProperty("dest", new JObject( new JProperty("format", "pdf") ) ) ) ) ); string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString()); return JObject.Parse(results); } } public static async Task<JObject> Convert(string affinityToken, string fileID) { var endpoint = new Uri("https://api.accusoft.com/v2/contentConverters"); using (var client = new WebClient()) { client.Headers.Add("Content-Type", "application/json"); client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); JObject myJson = new JObject( new JProperty("input", new JObject( new JProperty("sources", new JArray( new JObject( new JProperty("fileId", fileID) ) ) ), new JProperty("dest", new JObject( new JProperty("format", "pdf") ) ) ) ) ); string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString()); return JObject.Parse(results); } } Public Shared Async Function Convert(ByVal affinityToken As String, ByVal fileID As String) As Task(Of JObject) Dim endpoint = New Uri("https://api.accusoft.com/v2/contentConverters") Using client = New WebClient() client.Headers.Add("Content-Type", "application/json") client.Headers.Add("acs-api-key", ApiKey) client.Headers.Add("Accusoft-Affinity-Token", affinityToken) Dim myJson As New JObject(New JProperty("input", New JObject(New JProperty("sources", New JArray(New JObject(New JProperty("fileId", fileID)))), New JProperty("dest", New JObject(New JProperty("format", "pdf")))))) Dim results As String = Await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString()) Return JObject.Parse(results) End Using End Function $vbLabelText $csharpLabel 次のJSONは、myJsonオブジェクトの結果値です。 { "input": { "sources": [ {"fileId": "Auto Generated FileId Value"} ], "dest": { "format": "pdf" } } } 変換が完了しているか状態を確認 public static async Task<JObject> ConvertStatus(string processId, string affinityToken) { string endpoint = "https://api.accusoft.com/v2/contentConverters/" + processId; using (var client = new WebClient()) { client.BaseAddress = endpoint; client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); string results = await client.DownloadStringTaskAsync(endpoint); return JObject.Parse(results); } } public static async Task<JObject> ConvertStatus(string processId, string affinityToken) { string endpoint = "https://api.accusoft.com/v2/contentConverters/" + processId; using (var client = new WebClient()) { client.BaseAddress = endpoint; client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); string results = await client.DownloadStringTaskAsync(endpoint); return JObject.Parse(results); } } Public Shared Async Function ConvertStatus(ByVal processId As String, ByVal affinityToken As String) As Task(Of JObject) Dim endpoint As String = "https://api.accusoft.com/v2/contentConverters/" & processId Using client = New WebClient() client.BaseAddress = endpoint client.Headers.Add("acs-api-key", ApiKey) client.Headers.Add("Accusoft-Affinity-Token", affinityToken) Dim results As String = Await client.DownloadStringTaskAsync(endpoint) Return JObject.Parse(results) End Using End Function $vbLabelText $csharpLabel 3. サーバーから変換済みファイルをダウンロード public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile) { var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" + fileId); using (var client = new WebClient()) { client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); FileInfo output = new FileInfo(outfile); using (var writeStream = output.Create()) { var results = await client.DownloadDataTaskAsync(endpoint); await writeStream.WriteAsync(results, 0, results.Length); } } } public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile) { var endpoint = new Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" + fileId); using (var client = new WebClient()) { client.Headers.Add("acs-api-key", ApiKey); client.Headers.Add("Accusoft-Affinity-Token", affinityToken); FileInfo output = new FileInfo(outfile); using (var writeStream = output.Create()) { var results = await client.DownloadDataTaskAsync(endpoint); await writeStream.WriteAsync(results, 0, results.Length); } } } Public Shared Async Function DownloadFromServer(ByVal affinityToken As String, ByVal fileId As String, ByVal outfile As String) As Task Dim endpoint = New Uri("https://api.accusoft.com/PCCIS/V1/WorkFile/" & fileId) Using client = New WebClient() client.Headers.Add("acs-api-key", ApiKey) client.Headers.Add("Accusoft-Affinity-Token", affinityToken) Dim output As New FileInfo(outfile) Using writeStream = output.Create() Dim results = Await client.DownloadDataTaskAsync(endpoint) Await writeStream.WriteAsync(results, 0, results.Length) End Using End Using End Function $vbLabelText $csharpLabel 上記の例は多くの労力を要します! 負荷を最小限に抑えるために、Accusoftは.NETライブラリAccusoft.PrizmDocServerSDKを導入しました。これはPrizmDoc Server REST APIをラップするものです。 .NETプロジェクトでこのライブラリをインストールし使用する方法を見てみましょう Accusoft.PrizmDocServerSDKのインストール ラッパーをインストールする方法は2つあります。 パッケージマネージャコンソールを使っている場合: パッケージマネージャコンソールを使っている場合は次のコマンドを実行します: ```shell Install-Package Accusoft.PrizmDocServerSDK ``` ソリューションのパッケージの管理: NuGetパッケージマネージャーのGUIを使用している場合は、検索バーでAccusoft.PrizmDocServerSDKを検索してインストールします。 これでAccusoft.PrizmDocServer名前空間に簡単にアクセスして使用することができます。 using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer; Imports Accusoft.PrizmDocServer $vbLabelText $csharpLabel class="tutorial-segment-title">How To Tutorials 2. IronPDF対PrizmDoc Viewerコード比較 両コンポーネントの紹介とインストールを読んだ後、今度は両コンポーネントで作業する時です。 これにより、いくつかのユースケースを採用し、両コンポーネントを使用してそれを実装します。 これにより、両方のプログラミング構造を簡単に理解し、どちらがプロジェクトに最適か結論を出す方法が見つかることを願っています。 3. HTMLをPDFファイルに変換 最初の比較において、myWebPage.htmlという名前のウェブページを持ち、そこからPDFファイルを作成し、ターゲットの場所に保存するユースケースを取り上げます。 3.1. IronPDF HTMLをPDFに変換 using IronPdf; static void Main(string[] args) { // Create rendering converter var converter = new ChromePdfRenderer(); // Render HTML file to PDF using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html"); // Save to target location PDF.SaveAs("sample.pdf"); } using IronPdf; static void Main(string[] args) { // Create rendering converter var converter = new ChromePdfRenderer(); // Render HTML file to PDF using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html"); // Save to target location PDF.SaveAs("sample.pdf"); } Imports IronPdf Shared Sub Main(ByVal args() As String) ' Create rendering converter Dim converter = New ChromePdfRenderer() ' Render HTML file to PDF Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html") ' Save to target location PDF.SaveAs("sample.pdf") End Sub $vbLabelText $csharpLabel 上記のコードはsample.pdfファイルを作成し、プロジェクトのbin>debugフォルダーに保存します。 また、PDF.SaveAs("E:/sample.pdf");のように任意のパスを指定することもできます。 IronPDFを使用してPDFファイルを扱う方法の詳細を読む。 今度は、同じタスクをPrizmDoc Viewerを使って行い、比較が容易になるようにします。 3.2. PrizmDoc Viewer HTMLをPDFに変換 PrizmDoc ViewerのインストールではすでにAccusoft API Keyを取得する方法について説明しましたが、今度はその使い方を見てみます。 まず、PrizmDocサーバーへのリクエストを送信し、そこからレスポンスを受け取ります。 このプロセスには時間がかかるため、非同期プログラミングを使用する必要があります。 注意: PrizmDoc Viewerのクラウドサービスを使用してPDFファイルを作成する際には、システムがインターネットに接続されていることを確認してください。 using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { ChromePdfRenderer().GetAwaiter().GetResult(); } private static async Task ChromePdfRenderer() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Specify HTML file and convert it to a PDF. ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html"); // Save PDF file to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { ChromePdfRenderer().GetAwaiter().GetResult(); } private static async Task ChromePdfRenderer() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Specify HTML file and convert it to a PDF. ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html"); // Save PDF file to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } Imports Accusoft.PrizmDocServer Imports Accusoft.PrizmDocServer.Conversion Shared Sub Main(ByVal args() As String) ChromePdfRenderer().GetAwaiter().GetResult() End Sub Private Shared Async Function ChromePdfRenderer() As Task ' Instantiate PrizmDocServerClient object Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY") ' Specify HTML file and convert it to a PDF. Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html") ' Save PDF file to the target location Await result.RemoteWorkFile.SaveAsync("sample.pdf") End Function $vbLabelText $csharpLabel PrizmDoc Viewerを使って作業する方法の詳細を読む。 3.3. HTMLをPDFに変換するコードの比較 これらの例から見ると、IronPDFを用いる方がPDFファイルを作成するのがより簡単で、時間もあまりかからないアプローチであることがわかります。 4. 画像をPDFに変換 この比較では、GoogleLogo画像を使用してPDFファイルを作成し、プロジェクトのdebugフォルダーに保存します。 IronPDFで始めましょう。 4.1. IronPDF画像をPDFに変換 using IronPdf; static void Main(string[] args) { // Specify the image to be converted using var converted = ImageToPdfConverter.ImageToPdf("google.png"); // Save PDF file to the target location converted.SaveAs("sample.pdf"); } using IronPdf; static void Main(string[] args) { // Specify the image to be converted using var converted = ImageToPdfConverter.ImageToPdf("google.png"); // Save PDF file to the target location converted.SaveAs("sample.pdf"); } Imports IronPdf Shared Sub Main(ByVal args() As String) ' Specify the image to be converted Dim converted = ImageToPdfConverter.ImageToPdf("google.png") ' Save PDF file to the target location converted.SaveAs("sample.pdf") End Sub $vbLabelText $csharpLabel 出力: 上記コードを使用して新しく作成されたPDFファイルsample.pdfのスクリーンショット: class="content-img-align-center"> class="center-image-wrapper"> IronPDFを使用して、画像からPDFファイルを作成するのがどれほど簡単かおわかりいただけます。 今度は、PrizmDoc Viewerを使用して同じタスクを実行し、その生成されたPDFファイルを確認します。 4.2. PrizmDoc Viewer画像をPDFに変換 using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { ImageToPDF().GetAwaiter().GetResult(); } private static async Task ImageToPDF() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Specify the image to be converted ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png"); // Save PDF file to the target location await results.RemoteWorkFile.SaveAsync("sample.pdf"); } using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { ImageToPDF().GetAwaiter().GetResult(); } private static async Task ImageToPDF() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Specify the image to be converted ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png"); // Save PDF file to the target location await results.RemoteWorkFile.SaveAsync("sample.pdf"); } Imports Accusoft.PrizmDocServer Imports Accusoft.PrizmDocServer.Conversion Shared Sub Main(ByVal args() As String) ImageToPDF().GetAwaiter().GetResult() End Sub Private Shared Async Function ImageToPDF() As Task ' Instantiate PrizmDocServerClient object Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY") ' Specify the image to be converted Dim results As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("google.png") ' Save PDF file to the target location Await results.RemoteWorkFile.SaveAsync("sample.pdf") End Function $vbLabelText $csharpLabel 出力: This screenshot is of a newly created PDF file sample.pdf from the above code: class="content-img-align-center"> class="center-image-wrapper"> 4.3. 画像をPDFに変換するコードの比較 IronPDFを使用すれば、2つの簡単なコード行を書くだけで済むことがわかります。 一方PrizmDocサーバーを使用する場合、非同期プログラミングと共に多くのコード行を書く必要があります。 IronPDFの出力は、自動的に使用可能なフルページドキュメントも提供します。 5. PDFファイルのマージ この比較では、3つのPDFファイルA.pdf、B.pdf、C.pdfを持っていると仮定します。 それらを1つのPDFファイルに統合したいと考えていますが、これを両方のコンポーネントを使用して行うことができます。 まず、IronPDFを使用してこのタスクを実行する方法を見てみましょう。 5.1. IronPDFでPDFファイルをマージ using IronPdf; using System.Collections.Generic; static void Main(string[] args) { // Create rendering converter var Renderer = new IronPdf.ChromePdfRenderer(); // Create a list of pdf files var PDFs = new List<PdfDocument>(); PDFs.Add(PdfDocument.FromFile("A.pdf")); PDFs.Add(PdfDocument.FromFile("B.pdf")); PDFs.Add(PdfDocument.FromFile("C.pdf")); // Merge the list of pdf file using PdfDocument PDF = PdfDocument.Merge(PDFs); // Save merged file to the target location PDF.SaveAs("sample.pdf"); foreach(var pdf in PDFs) { pdf.Dispose(); } } using IronPdf; using System.Collections.Generic; static void Main(string[] args) { // Create rendering converter var Renderer = new IronPdf.ChromePdfRenderer(); // Create a list of pdf files var PDFs = new List<PdfDocument>(); PDFs.Add(PdfDocument.FromFile("A.pdf")); PDFs.Add(PdfDocument.FromFile("B.pdf")); PDFs.Add(PdfDocument.FromFile("C.pdf")); // Merge the list of pdf file using PdfDocument PDF = PdfDocument.Merge(PDFs); // Save merged file to the target location PDF.SaveAs("sample.pdf"); foreach(var pdf in PDFs) { pdf.Dispose(); } } Imports IronPdf Imports System.Collections.Generic Shared Sub Main(ByVal args() As String) ' Create rendering converter Dim Renderer = New IronPdf.ChromePdfRenderer() ' Create a list of pdf files Dim PDFs = New List(Of PdfDocument)() PDFs.Add(PdfDocument.FromFile("A.pdf")) PDFs.Add(PdfDocument.FromFile("B.pdf")) PDFs.Add(PdfDocument.FromFile("C.pdf")) ' Merge the list of pdf file Using PDF As PdfDocument = PdfDocument.Merge(PDFs) ' Save merged file to the target location PDF.SaveAs("sample.pdf") 'INSTANT VB NOTE: The variable pdf was renamed since Visual Basic will not allow local variables with the same name as parameters or other local variables: For Each .pdf_Conflict In PDFs .pdf_Conflict.Dispose() Next pdf_Conflict End Using End Sub $vbLabelText $csharpLabel 上記のコードは、A.pdf、B.pdf、C.pdfの組み合わせであるsample.pdfファイルを作成します。 今度は、PrizmDoc Viewerを使って同じタスクを行います。 5.2. PrizmDoc ViewerでPDFファイルをマージ using System.Threading.Tasks; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { PdfMerge().GetAwaiter().GetResult(); } private static async Task PdfMerge() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Pass the list of pdf files to PrizmDoc Server ConversionResult result = await prizmDocServer.CombineToPdfAsync( new [] { new ConversionSourceDocument("A.pdf"), new ConversionSourceDocument("B.pdf"), new ConversionSourceDocument("C.pdf"), }); // Save merged file to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } using System.Threading.Tasks; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { PdfMerge().GetAwaiter().GetResult(); } private static async Task PdfMerge() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Pass the list of pdf files to PrizmDoc Server ConversionResult result = await prizmDocServer.CombineToPdfAsync( new [] { new ConversionSourceDocument("A.pdf"), new ConversionSourceDocument("B.pdf"), new ConversionSourceDocument("C.pdf"), }); // Save merged file to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } Imports System.Threading.Tasks Imports Accusoft.PrizmDocServer Imports Accusoft.PrizmDocServer.Conversion Shared Sub Main(ByVal args() As String) PdfMerge().GetAwaiter().GetResult() End Sub Private Shared Async Function PdfMerge() As Task ' Instantiate PrizmDocServerClient object Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY") ' Pass the list of pdf files to PrizmDoc Server Dim result As ConversionResult = Await prizmDocServer.CombineToPdfAsync( { New ConversionSourceDocument("A.pdf"), New ConversionSourceDocument("B.pdf"), New ConversionSourceDocument("C.pdf") }) ' Save merged file to the target location Await result.RemoteWorkFile.SaveAsync("sample.pdf") End Function $vbLabelText $csharpLabel 上記のコードでもまた、A.pdf、B.pdf、C.pdfの組み合わせとしてsample.pdfファイルを作成します。 6. PDFヘッダーとフッター この比較で、myWebPage.htmlという名前の簡単なWebページを持っており、次のHTMLとCSSがありますと仮定します。 <html> <head> <style> li { font-size: x-large; color: rgba(156, 89, 13, 0.897); list-style: square; } </style> </head> <body> <h1 style="text-align: center;">Hello World..!</h1> <h1>Main Menu</h1> <ul> <li>SubMenu 1</li> <li>SubMenu 2</li> <li>SubMenu 3</li> <li>SubMenu 4</li> <li>SubMenu 5</li> </ul> </body> </html> <html> <head> <style> li { font-size: x-large; color: rgba(156, 89, 13, 0.897); list-style: square; } </style> </head> <body> <h1 style="text-align: center;">Hello World..!</h1> <h1>Main Menu</h1> <ul> <li>SubMenu 1</li> <li>SubMenu 2</li> <li>SubMenu 3</li> <li>SubMenu 4</li> <li>SubMenu 5</li> </ul> </body> </html> HTML このWebページをPDFファイルに変換し、次のヘッダーとフッターのプロパティを設定します: ヘッダーの左側にページタイトルを設定、 ヘッダーの右側に日時を設定 フッターの右側にページ番号/全ページを設定 まず、IronPDFを使用してヘッダーとフッターを設定する方法を見てみます。 6.1. IronPDF PDFヘッダーとフッター PDFファイルのヘッダーとフッターを扱うために、IronPDFはChromePdfRendererクラスにRenderingOptionsというプロパティを提供します。これを以下のように使用できます: ヘッダー: ChromePdfRenderer_Obj.RenderingOptions.TextHeader = new TextHeaderFooter(); ChromePdfRenderer_Obj.RenderingOptions.TextHeader = new TextHeaderFooter(); ChromePdfRenderer_Obj.RenderingOptions.TextHeader = New TextHeaderFooter() $vbLabelText $csharpLabel フッター: ChromePdfRenderer_Obj.RenderingOptions.TextFooter = new TextHeaderFooter(); ChromePdfRenderer_Obj.RenderingOptions.TextFooter = new TextHeaderFooter(); ChromePdfRenderer_Obj.RenderingOptions.TextFooter = New TextHeaderFooter() $vbLabelText $csharpLabel 次のプロパティをTextHeaderFooter()を初期化しながら設定可能です: CenterText ヘッダーまたはフッターの中央にテキストを印刷します。 LeftText ヘッダーまたはフッターの左側にテキストを印刷します。 RightText ヘッダーまたはフッターの右側にテキストを印刷します。 DrawDividerLine ページコンテンツとヘッダーまたはフッターを分ける線を引きます。 FontFamily ヘッダーまたはフッターのフォントファミリーを指定します。 FontSize ヘッダーまたはフッターのフォントサイズを指定します。 Spacing ページコンテンツとヘッダーまたはフッターの間隔を調整します。 ヘッダーまたはフッターのコンテンツを設定するのに非常に役立つ事前定義された属性がいくつかあります。 以下のように波かっこ{ }で書くことができます: {page} 現在のページ番号をヘッダーまたはフッターに印刷します。 {total-pages} 全ページ数をヘッダーまたはフッターに印刷します。 {url} レンダリングされたページのURLを印刷します。 {date} 現在の日付をヘッダーまたはフッターに印刷します。 {time} 現在の時刻をヘッダーまたはフッターに印刷します。 {html-title} レンダリングされたウェブページのタイトルをヘッダーまたはフッターに印刷します。 {pdf-title} ドキュメントタイトルをヘッダーまたはフッターに印刷します。 IronPDFを使ってヘッダーやフッターを操作する方法の詳細を読む。 次に、このユースケースを実装し、上記のプロパティを使用してPDFファイルのヘッダーとフッターを設定する方法を示す例を見てみます。 using IronPdf; static void Main(string[] args) { // Create rendering converter var converter = new ChromePdfRenderer(); // Setting Header properties converter.RenderingOptions.TextHeader = new TextHeaderFooter() { DrawDividerLine = true, LeftText = "Page Title", RightText = "{date} {time}", FontSize = 13 }; // Setting footer properties converter.RenderingOptions.TextFooter = new TextHeaderFooter() { RightText = "Page {page} of {total-pages}", FontSize = 12 }; // Specify the file to be converted using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html"); // Save to target location PDF.SaveAs("sample.pdf"); } using IronPdf; static void Main(string[] args) { // Create rendering converter var converter = new ChromePdfRenderer(); // Setting Header properties converter.RenderingOptions.TextHeader = new TextHeaderFooter() { DrawDividerLine = true, LeftText = "Page Title", RightText = "{date} {time}", FontSize = 13 }; // Setting footer properties converter.RenderingOptions.TextFooter = new TextHeaderFooter() { RightText = "Page {page} of {total-pages}", FontSize = 12 }; // Specify the file to be converted using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html"); // Save to target location PDF.SaveAs("sample.pdf"); } Imports IronPdf Shared Sub Main(ByVal args() As String) ' Create rendering converter Dim converter = New ChromePdfRenderer() ' Setting Header properties converter.RenderingOptions.TextHeader = New TextHeaderFooter() With { .DrawDividerLine = True, .LeftText = "Page Title", .RightText = "{date} {time}", .FontSize = 13 } ' Setting footer properties converter.RenderingOptions.TextFooter = New TextHeaderFooter() With { .RightText = "Page {page} of {total-pages}", .FontSize = 12 } ' Specify the file to be converted Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html") ' Save to target location PDF.SaveAs("sample.pdf") End Sub $vbLabelText $csharpLabel 出力: The screenshot of the newly created PDF file sample.pdf by the above code: class="content-img-align-center"> class="center-image-wrapper"> IronPDFを用いて、直感的な言語を使いながらPDFファイルを作成する際に、ヘッダーとフッターを操作するのがどれほど簡単であるかをおわかりいただけます。 今度は、PrizmDoc Viewerを使ってヘッダーとフッターを設定する方法を見てみます。 6.2. PrizmDoc Viewer PDFヘッダーとフッター PrizmDoc ViewerはHeaderFooterOptionsクラスを提供し、以下のプロパティでヘッダーやフッターを扱います: Lines ヘッダーやフッターの行を指定します(以下の例を理解するとうまく理解できます)。各行には以下のプロパティがあります: Left ヘッダーやフッター行の左側にテキストを印刷します。 Center ヘッダーやフッター行の中央にテキストを印刷します。 Right ヘッダーやフッター行の右側にテキストを印刷します。 FontFamily ヘッダーやフッターのテキストのフォントファミリーを指定します。 FontSize ヘッダーやフッターのテキストのフォントサイズを指定します。 Color ヘッダーやフッターのテキストの色を指定します。 PrizmDocサーバーを使用してPDFページのヘッダーやフッターを設定する方法の詳細を読む。 以下のプロパティを使用して、ユースケースを実装する方法を見てみましょう。 using System.Threading.Tasks; using System.Collections.Generic; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { SetHeaderFooter().GetAwaiter().GetResult(); } private static async Task SetHeaderFooter() { // Instantiate PrizmDocServerClient object with Header and footer properties var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); ConversionResult result = await prizmDocServer.ConvertToPdfAsync( "myWebPage.html", header: new HeaderFooterOptions { Lines = new List<HeaderFooterLine> { new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() } }, }, footer: new HeaderFooterOptions { Lines = new List<HeaderFooterLine> { new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" }, }, }); // Save to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } using System.Threading.Tasks; using System.Collections.Generic; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { SetHeaderFooter().GetAwaiter().GetResult(); } private static async Task SetHeaderFooter() { // Instantiate PrizmDocServerClient object with Header and footer properties var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); ConversionResult result = await prizmDocServer.ConvertToPdfAsync( "myWebPage.html", header: new HeaderFooterOptions { Lines = new List<HeaderFooterLine> { new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() } }, }, footer: new HeaderFooterOptions { Lines = new List<HeaderFooterLine> { new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" }, }, }); // Save to the target location await result.RemoteWorkFile.SaveAsync("sample.pdf"); } Imports System.Threading.Tasks Imports System.Collections.Generic Imports Accusoft.PrizmDocServer Imports Accusoft.PrizmDocServer.Conversion Shared Sub Main(ByVal args() As String) SetHeaderFooter().GetAwaiter().GetResult() End Sub Private Shared Async Function SetHeaderFooter() As Task ' Instantiate PrizmDocServerClient object with Header and footer properties Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY") Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html", header:= New HeaderFooterOptions With {.Lines = New List(Of HeaderFooterLine) _ From { New HeaderFooterLine With { .Left = "Page Title", .Right = DateTime.Now.ToString() } } }, footer:= New HeaderFooterOptions With { .Lines = New List(Of HeaderFooterLine) From { New HeaderFooterLine With {.Right = "Page {{pageNumber}} of {{pageCount}}"} } }) ' Save to the target location Await result.RemoteWorkFile.SaveAsync("sample.pdf") End Function $vbLabelText $csharpLabel 出力: 上記コードにより作成された新しいPDFファイルのスクリーンショット: class="content-img-align-center"> class="center-image-wrapper"> 6.3. PDFヘッダーとフッターのコード比較 IronPDF は、PrizmDoc Viewer と比較して、シンプルなプログラミング構造でヘッダーとフッターのプロパティを設定するためのより多くの機能を提供していることがわかります。 また、IronPDFによって生成されたPDFファイルは、PrizmDoc Viewerによって生成されたファイルよりも読みやすく魅力的であることが示唆されています。 7. PDFページを画像に変換 もう一つのユースケース: Sample_PDF.pdfという名前のシンプルなPDFファイルがあり、2ページだけからなっています。 Page1 Page2 class="center-image-wrapper"> class="center-image-wrapper"> そして各ページの画像を作成する必要があります。 まず、IronPDFを使用してこのタスクを実行する方法を見てみましょう。 7.1. IronPDF PDFを画像に変換 using IronPdf; static void Main(string[] args) { // Specify file to be converted var pdf = PdfDocument.FromFile("Sample_PDF.pdf"); // Save images to the target location pdf.RasterizeToImageFiles("image_*.png"); } using IronPdf; static void Main(string[] args) { // Specify file to be converted var pdf = PdfDocument.FromFile("Sample_PDF.pdf"); // Save images to the target location pdf.RasterizeToImageFiles("image_*.png"); } Imports IronPdf Shared Sub Main(ByVal args() As String) ' Specify file to be converted Dim pdf = PdfDocument.FromFile("Sample_PDF.pdf") ' Save images to the target location pdf.RasterizeToImageFiles("image_*.png") End Sub $vbLabelText $csharpLabel 出力: 上記コードは次の2つの.png画像を作成します: Page1 Image Page2 Image class="center-image-wrapper"> class="center-image-wrapper"> IronPDFを使用して、各PDFページの画像を作成するのがどれほど簡単かがわかります。 今度は、PrizmDoc Viewerを使って同じタスクを行います。 7.2. PrizmDoc Viewer PDFを画像に変換 using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { PdfToImage().GetAwaiter().GetResult(); } private static async Task PdfToImage() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Convert PDF file to images IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png); // Save each image. for (int i = 0; i < results.Count(); i++) { await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png"); } } using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; using Accusoft.PrizmDocServer; using Accusoft.PrizmDocServer.Conversion; static void Main(string[] args) { PdfToImage().GetAwaiter().GetResult(); } private static async Task PdfToImage() { // Instantiate PrizmDocServerClient object var prizmDocServer = new PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY"); // Convert PDF file to images IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png); // Save each image. for (int i = 0; i < results.Count(); i++) { await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png"); } } Imports System.Linq Imports System.Collections.Generic Imports System.Threading.Tasks Imports Accusoft.PrizmDocServer Imports Accusoft.PrizmDocServer.Conversion Shared Sub Main(ByVal args() As String) PdfToImage().GetAwaiter().GetResult() End Sub Private Shared Async Function PdfToImage() As Task ' Instantiate PrizmDocServerClient object Dim prizmDocServer = New PrizmDocServerClient("https://api.accusoft.com", "Your-API-KEY") ' Convert PDF file to images Dim results As IEnumerable(Of ConversionResult) = Await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png) ' Save each image. For i As Integer = 0 To results.Count() - 1 Await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png") Next i End Function $vbLabelText $csharpLabel 出力: 上記コードもまた、次の2つの.png画像を作成します: Page1 Page2 class="center-image-wrapper"> class="center-image-wrapper"> 7.3. PDFを画像に変換するコードの比較 PrizmDoc Viewerと比較して、IronPDFを使用することで、各ページの画像を少ないコード行数で簡単に作成することができ、ページを繰り返し処理する必要もありません。 IronPDFを使ってBootstrap 5とデータテーブルを使用する IronPDFのChrome V8レンダリングエンジンは、Bootstrap 5のデータテーブルを例外的にサポートし、複雑な表形式のレイアウトを持つプロフェッショナルなPDFレポートを生成できます。 この例では、グラデーションヘッダー、ステータスバッジ、ページネーションコントロール、要約指標を示し、IronPDFのPrizmDocのような従来のPDFビューアに対する利点を示しています。 using IronPdf; var renderer = new ChromePdfRenderer(); string dataTableReport = @" <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'> <style> .table-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; border-radius: 10px 10px 0 0; } .table-container { background: white; border-radius: 0 0 10px 10px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); overflow: hidden; } .table th { background: #f8f9fa; font-weight: 600; text-transform: uppercase; font-size: 0.85rem; letter-spacing: 0.5px; } .status-badge { padding: 0.35em 0.65em; border-radius: 0.25rem; font-weight: 600; font-size: 0.75rem; } .trend-positive { color: #198754; font-weight: 700; } .trend-negative { color: #dc3545; font-weight: 700; } @media print { .table-container { page-break-inside: avoid; } } </style> </head> <body class='bg-light'> <div class='container py-5'> <div class='table-container'> <div class='table-header'> <div class='row align-items-center'> <div class='col-md-8'> <h2 class='mb-2'>Sales Performance Report</h2> <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p> </div> <div class='col-md-4 text-end'> <div class='btn-group btn-group-sm'> <button class='btn btn-light'>Export</button> <button class='btn btn-light'>Filter</button> <button class='btn btn-light'>Sort</button> </div> </div> </div> </div> <div class='p-4'> <div class='row mb-3'> <div class='col-md-4'> <input type='text' class='form-control form-control-sm' placeholder='Search regions...'> </div> <div class='col-md-8 text-end'> <span class='text-muted small'>Showing 1-10 of 48 results</span> </div> </div> <div class='table-responsive'> <table class='table table-hover align-middle'> <thead> <tr> <th>Region</th> <th>Revenue</th> <th>Units Sold</th> <th>Growth</th> <th>Status</th> <th>Action</th> </tr> </thead> <tbody> <tr> <td> <strong>North America</strong><br> <small class='text-muted'>USA, Canada, Mexico</small> </td> <td>$4,280,000</td> <td>12,450</td> <td><span class='trend-positive'>↑ 18.5%</span></td> <td><span class='status-badge bg-success text-white'>Exceeding</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Europe</strong><br> <small class='text-muted'>EU, UK, Switzerland</small> </td> <td>$3,650,000</td> <td>10,890</td> <td><span class='trend-positive'>↑ 12.3%</span></td> <td><span class='status-badge bg-success text-white'>On Track</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Asia Pacific</strong><br> <small class='text-muted'>Japan, Australia, Singapore</small> </td> <td>$2,940,000</td> <td>8,320</td> <td><span class='trend-positive'>↑ 24.7%</span></td> <td><span class='status-badge bg-primary text-white'>Growing</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Latin America</strong><br> <small class='text-muted'>Brazil, Argentina, Chile</small> </td> <td>$1,580,000</td> <td>4,670</td> <td><span class='trend-positive'>↑ 8.9%</span></td> <td><span class='status-badge bg-info text-white'>Stable</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Middle East</strong><br> <small class='text-muted'>UAE, Saudi Arabia, Israel</small> </td> <td>$980,000</td> <td>2,890</td> <td><span class='trend-negative'>↓ 3.2%</span></td> <td><span class='status-badge bg-warning text-dark'>Review</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> </tbody> <tfoot class='table-light'> <tr> <td><strong>Total</strong></td> <td><strong>$13,430,000</strong></td> <td><strong>39,220</strong></td> <td><strong class='trend-positive'>↑ 14.8%</strong></td> <td colspan='2'></td> </tr> </tfoot> </table> </div> <div class='d-flex justify-content-between align-items-center mt-4'> <div> <select class='form-select form-select-sm' style='width: auto; display: inline-block;'> <option>10 per page</option> <option>25 per page</option> <option>50 per page</option> </select> </div> <nav> <ul class='pagination pagination-sm mb-0'> <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li> <li class='page-item active'><a class='page-link' href='#'>1</a></li> <li class='page-item'><a class='page-link' href='#'>2</a></li> <li class='page-item'><a class='page-link' href='#'>3</a></li> <li class='page-item'><a class='page-link' href='#'>Next</a></li> </ul> </nav> </div> </div> </div> <div class='row g-3 mt-4'> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-primary mb-1'>$13.4M</h3> <small class='text-muted'>Total Revenue</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-success mb-1'>39,220</h3> <small class='text-muted'>Units Sold</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-info mb-1'>14.8%</h3> <small class='text-muted'>Growth Rate</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-warning mb-1'>5</h3> <small class='text-muted'>Active Regions</small> </div> </div> </div> </div> </div> </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(dataTableReport); pdf.SaveAs("data-table-report.pdf"); using IronPdf; var renderer = new ChromePdfRenderer(); string dataTableReport = @" <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'> <style> .table-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; border-radius: 10px 10px 0 0; } .table-container { background: white; border-radius: 0 0 10px 10px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); overflow: hidden; } .table th { background: #f8f9fa; font-weight: 600; text-transform: uppercase; font-size: 0.85rem; letter-spacing: 0.5px; } .status-badge { padding: 0.35em 0.65em; border-radius: 0.25rem; font-weight: 600; font-size: 0.75rem; } .trend-positive { color: #198754; font-weight: 700; } .trend-negative { color: #dc3545; font-weight: 700; } @media print { .table-container { page-break-inside: avoid; } } </style> </head> <body class='bg-light'> <div class='container py-5'> <div class='table-container'> <div class='table-header'> <div class='row align-items-center'> <div class='col-md-8'> <h2 class='mb-2'>Sales Performance Report</h2> <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p> </div> <div class='col-md-4 text-end'> <div class='btn-group btn-group-sm'> <button class='btn btn-light'>Export</button> <button class='btn btn-light'>Filter</button> <button class='btn btn-light'>Sort</button> </div> </div> </div> </div> <div class='p-4'> <div class='row mb-3'> <div class='col-md-4'> <input type='text' class='form-control form-control-sm' placeholder='Search regions...'> </div> <div class='col-md-8 text-end'> <span class='text-muted small'>Showing 1-10 of 48 results</span> </div> </div> <div class='table-responsive'> <table class='table table-hover align-middle'> <thead> <tr> <th>Region</th> <th>Revenue</th> <th>Units Sold</th> <th>Growth</th> <th>Status</th> <th>Action</th> </tr> </thead> <tbody> <tr> <td> <strong>North America</strong><br> <small class='text-muted'>USA, Canada, Mexico</small> </td> <td>$4,280,000</td> <td>12,450</td> <td><span class='trend-positive'>↑ 18.5%</span></td> <td><span class='status-badge bg-success text-white'>Exceeding</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Europe</strong><br> <small class='text-muted'>EU, UK, Switzerland</small> </td> <td>$3,650,000</td> <td>10,890</td> <td><span class='trend-positive'>↑ 12.3%</span></td> <td><span class='status-badge bg-success text-white'>On Track</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Asia Pacific</strong><br> <small class='text-muted'>Japan, Australia, Singapore</small> </td> <td>$2,940,000</td> <td>8,320</td> <td><span class='trend-positive'>↑ 24.7%</span></td> <td><span class='status-badge bg-primary text-white'>Growing</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Latin America</strong><br> <small class='text-muted'>Brazil, Argentina, Chile</small> </td> <td>$1,580,000</td> <td>4,670</td> <td><span class='trend-positive'>↑ 8.9%</span></td> <td><span class='status-badge bg-info text-white'>Stable</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> <tr> <td> <strong>Middle East</strong><br> <small class='text-muted'>UAE, Saudi Arabia, Israel</small> </td> <td>$980,000</td> <td>2,890</td> <td><span class='trend-negative'>↓ 3.2%</span></td> <td><span class='status-badge bg-warning text-dark'>Review</span></td> <td><button class='btn btn-sm btn-outline-primary'>Details</button></td> </tr> </tbody> <tfoot class='table-light'> <tr> <td><strong>Total</strong></td> <td><strong>$13,430,000</strong></td> <td><strong>39,220</strong></td> <td><strong class='trend-positive'>↑ 14.8%</strong></td> <td colspan='2'></td> </tr> </tfoot> </table> </div> <div class='d-flex justify-content-between align-items-center mt-4'> <div> <select class='form-select form-select-sm' style='width: auto; display: inline-block;'> <option>10 per page</option> <option>25 per page</option> <option>50 per page</option> </select> </div> <nav> <ul class='pagination pagination-sm mb-0'> <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li> <li class='page-item active'><a class='page-link' href='#'>1</a></li> <li class='page-item'><a class='page-link' href='#'>2</a></li> <li class='page-item'><a class='page-link' href='#'>3</a></li> <li class='page-item'><a class='page-link' href='#'>Next</a></li> </ul> </nav> </div> </div> </div> <div class='row g-3 mt-4'> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-primary mb-1'>$13.4M</h3> <small class='text-muted'>Total Revenue</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-success mb-1'>39,220</h3> <small class='text-muted'>Units Sold</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-info mb-1'>14.8%</h3> <small class='text-muted'>Growth Rate</small> </div> </div> </div> <div class='col-md-3'> <div class='card text-center'> <div class='card-body'> <h3 class='text-warning mb-1'>5</h3> <small class='text-muted'>Active Regions</small> </div> </div> </div> </div> </div> </body> </html>"; var pdf = renderer.RenderHtmlAsPdf(dataTableReport); pdf.SaveAs("data-table-report.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel このコードは、グラデーションヘッダー、レスポンシブテーブル、ステータスバッジ、要約指標を備えた洗練されたデータテーブルレポートを生成します。 IronPDFのChromeレンダリングエンジンは、テーブルのホバー効果、バッジの色、ページネーションコントロールを含むすべてのBootstrapスタイリングを保持します - これらの機能は従来のPDFビューアをはるかに超えています。 PrizmDoc Viewerに対する主要な利点: 変換なしでの直接HTML表のレンダリング フルBootstrapコンポーネントのサポート グラデーション背景と最新のCSS 適切なページネーションを持つレスポンシブテーブルレイアウト Bootstrap PDF生成に関する詳細は、HTMLをPDFに変換するBootstrapガイドをご覧ください。 8. ライセンス価格 上記の比較では、両方のコンポーネントの技術的な作業構造と提供される機能を見ました。 今度は、両方のコンポーネントのライセンス価格を見ていきます。 これは非常に重要です。なぜなら、私たちは常に最低の予算で要求を満たすために最善を尽くそうとするからです。 8.1. IronPDFライセンスオプション IronPDFライセンスは一つのプロジェクトで1人の開発者の場合、$699から始まります。 あなたが会社や複数のクライアントに仕事を提供する代理店のエンジニアである場合、ライセンスは$699から始まり、チームの規模やプロジェクトの数に応じて調整が可能です。 次のライセンスは一度の支払いが必要です。 開発者数 価格 1-5 9 6-10 9 11-20 9 21-50 $1,199 無制限 ,199 複数の拠点を持つ会社の場合、ライセンスは$1199から始まります。 SaaSサービスの場合、ライセンスは$1099から始まります。 ロイヤリティフリーのOEM再配布の場合、ライセンスは$1599から始まります。 注意: 上記のすべてのライセンスパッケージには1年間のサポートと更新が含まれています。 もっと読む IronPDFの提供されているすべてのライセンスパッケージについて。 8.2. PrizmDoc Viewerライセンスオプション 自社ホスティングオプション サーバーを自分で管理する場合、ライセンスの価格は標準サポート付きで$7,900/年です。 もっと読む PrizmDoc Viewerのすべての提供パッケージ情報について。 クラウドベースオプション このライセンスはPrizmDoc Viewerのクラウドベースサービスを対象とし、取引数に基づいてスケールされます。 用語: 取引とは、PrizmDoc Viewerサーバーにアクセスし、出力(結果のドキュメント)を取得することを意味します。 プリペイドバケットとは、一度の支払いで取引を得ることを意味し、有効期限がありません。 取引数 プリペイドバケット 月額 年間 200 1,000 2,000 9 6,000 4 9 ,859 (6,000取引/月) 12,000 4 9 ,179 (12,000取引/月) 25,000 9 9 ,459 (25,000取引/月) 50,000 ,199 9 ,789 (50,000取引/月) 100,000 $1,199 $1,199 ,989 (100,000取引/月) 200,000 ,549 ,699 ,188 (200,000取引/月) 300,000 ,299 ,199 ,188 (300,000取引/月) 400,000 ,049 ,699 ,188 (400,000取引/月) 500,000 ,799 ,199 ,188 (500,000取引/月) class="tutorial-segment-title">チュートリアル簡易アクセス class="tutorial-section"> class="row"> class="col-sm-4"> class="tutorial-image"> チュートリアル簡易アクセス" class="img-responsive add-shadow img-responsive img-popup" src="/img/svgs/html-to-pdf-icon.svg" loading="lazy"> class="col-sm-8"> C# IronPDFクイックスタートハンドブックを入手 私たちは.NET用のPDF開発を容易にするための無料のPDFリソースガイドを作成しました。一般的な機能のウォークスルーと、プロジェクトのためにC#やVB.NETでPDFを操作、編集、生成、保存するための例が含まれています。 ガイドをダウンロード class="tutorial-section"> class="row"> class="col-sm-8"> IronPDF APIリファレンスを探索 IronPDF C#ライブラリのAPIリファレンスを探索しましょう。IronPDFのすべての機能、クラス、メソッドフィールド、ネームスペース、列挙の詳細を含んでいます。 APIリファレンスを表示 class="col-sm-4"> class="tutorial-image"> チュートリアル簡易アクセス" class="img-responsive add-shadow img-responsive img-popup" src="/img/svgs/documentation.svg" loading="lazy"> [{i:(Accusoft社のPrizmDoc Viewerはその所有者の登録商標です。 このサイトはAccusoft社のPrizmDoc Viewerと提携していません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。)}] よくある質問 C# で HTML を PDF に変換するにはどうすればいいですか? IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。 IronPDF を使用する利点は、PrizmDoc Viewer と比較してどのようなものですか? IronPDF は、オフライン作業をサポートし、非同期プログラミングを必要としないシンプルなローカル PDF レンダリング ソリューションを提供します。対照的に、PrizmDoc Viewer は REST API を通じて動作し、リモートサーバーとのやり取りにインターネット接続を必要とします。 PDF ライブラリを使用して複数の PDF ドキュメントをマージできますか? はい、IronPDF を使用して、MergePdf メソッドを使用して複数の PDF をマージし、ドキュメントをシームレスに結合できます。 IronPDF は、PDF から画像への変換をどのように処理しますか? IronPDF は、組み込みメソッドを使用して PDF ページを画像に簡単に変換でき、他のソフトウェアと比較してスムーズなアプローチを提供します。 IronPDF のヘッダーとフッターのカスタマイズ オプションは何ですか? IronPDF は、シンプルなプログラミング構造でヘッダーとフッターのプロパティを設定するための幅広い機能を提供し、ドキュメントを簡単にカスタマイズできます。 IronPDF はオフライン PDF 処理に適していますか? はい、IronPDFはオフラインPDF処理をサポートしており、インターネット接続がなくても作業でき、リモートサーバーとの相互作用が必要な他のソリューションとは異なります。 IronPDF のライセンスの価格構造はどのようになっていますか? IronPDF のライセンスは 1 プロジェクト 1 開発者で $699 から始まり、SaaS 向けのスケーラブルなオプションがあります。 IronPDF での開発は無料でできますか? はい、IronPDF は開発には無料で使用でき、30 日間のデプロイメント トライアルがあり、プロジェクトのライブ展開が可能です。 PrizmDoc Viewer は HTML から PDF への変換をどのように処理しますか? PrizmDoc Viewer は、非同期プログラミングとリモートサーバーとのやり取りのためのインターネット接続を必要とする REST API を使用して HTML を PDF に変換します。 PrizmDoc Server をホストするためのシステム要件は何ですか? Self-hosting PrizmDoc Server には、処理ニーズに対応するために最低 32 GB の RAM と 4 コアの CPU が必要です。 IronPDF は .NET 10 と完全に互換性がありますか? はい。IronPDFは.NET 10(および.NET 9、8、7、6、.NET Core、.NET Standard、.NET Framework)をサポートしています。NuGet経由でインストールでき、Windows、Linux、macOSで動作します。また、Chromeベースのネイティブレンダラーを使用することで、.NET 10アプリケーションでピクセルパーフェクトなHTMLからPDFへのレンダリングを実現します。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 11月 13, 2025 C#のHTMLからPDFへのオープンソース対IronPDFの比較 C#用のオープンソースのHTMLからPDFライブラリをIronPDFと比較します。あなたの.NETプロジェクトに最適なPDF生成能力を提供するソリューションを見つけましょう。 詳しく読む 公開日 10月 27, 2025 どのASP.NET Core PDFライブラリが最も価値がありますか? ASP.NET Core アプリケーションに最適な PDF ライブラリを発見しよう。IronPDF の Chrome エンジンを Aspose および Syncfusion の代替案と比較します。 詳しく読む 公開日 10月 27, 2025 Aspose C# VS IronPDFでPDFを作成する方法 このステップバイステップガイドで、開発者向けにデザインされた Aspose C# と IronPDF を使用して PDF を作成する方法を学びましょう。 詳しく読む PDFSharp HTMLからPDFへの例とチュートリアルの比較IronPDF と PDFCrowd の比較
公開日 11月 13, 2025 C#のHTMLからPDFへのオープンソース対IronPDFの比較 C#用のオープンソースのHTMLからPDFライブラリをIronPDFと比較します。あなたの.NETプロジェクトに最適なPDF生成能力を提供するソリューションを見つけましょう。 詳しく読む
公開日 10月 27, 2025 どのASP.NET Core PDFライブラリが最も価値がありますか? ASP.NET Core アプリケーションに最適な PDF ライブラリを発見しよう。IronPDF の Chrome エンジンを Aspose および Syncfusion の代替案と比較します。 詳しく読む
公開日 10月 27, 2025 Aspose C# VS IronPDFでPDFを作成する方法 このステップバイステップガイドで、開発者向けにデザインされた Aspose C# と IronPDF を使用して PDF を作成する方法を学びましょう。 詳しく読む