フッターコンテンツにスキップ
製品比較

CraftMyPDFとIronPDFの比較

PDF、またはPortable Document Format(ポータブルドキュメントフォーマット)は、Adobeによって開発されたファイル形式で、簡単に文書を交換するためのものです。 これは、すべてのデバイスで文書が同じように表示されるようにし、フォーマット、フォント、画像を保持します。 PDFは安全で、インタラクティブで、コンパクトであり、内容を保ったまま共有するのに最適です。

C# PDFライブラリは、PDFを扱う開発者に不可欠です。 これらのツールは、PDFからコンテンツを作成、変更、および抽出するのに役立ちます。 フォーム処理やデジタル署名などの機能をサポートし、さまざまなプラットフォームで動作し、PDF処理の効率を向上させます。 C# PDFライブラリを使用すると、開発者はアプリケーションにPDF機能を追加し、プログラムによるPDF文書の作成、編集、管理をより簡単に行うことができます。

In this article, we will compare two different approaches to working with PDFs: the IronPDF C# library and the Craftmypdf API. これらの機能と機能を見て、コードの例を示し、ライセンスについて議論します。

1. CraftMyPDF APIベースソリューション

CraftMyPDFとIronPDFの比較: 図1 - CraftMyPDF APIベースソリューションのホームページ

CraftMyPDFはPDF文書を作成するために設計された多用途なAPIです。 ブラウザで直接PDFテンプレートをデザインできるウェブベースのドラッグアンドドロップエディタを提供します。 この機能は、再利用可能なテンプレートとJSONデータからピクセルパーフェクトなPDFを作成するのに特に便利です。 エディタには豊富なレイアウトコンポーネントが含まれており、強力な式、高度な書式設定、およびデータバインディングをサポートし、さまざまなPDF生成ニーズに対応する強力なツールです。

1.1 CraftMyPDFの主な機能

  1. ドラッグアンドドロップエディタ: CraftMyPDFの直感的なドラッグアンドドロップエディタは、PDFテンプレートの作成を簡単にします。 コーディング知識が全くなくてもテンプレートをデザインできるため、すべてのスキルレベルのユーザーにアクセスしやすいです。 このエディタでは、テキスト、画像、図形などのさまざまな要素を追加し、そのレイアウトや外観をカスタマイズできます。

  2. テンプレートの再利用性: プラットフォームは再利用可能なテンプレートをサポートしており、時間を大幅に節約できます。 テンプレートを一度デザインすると、異なるデータセットで何度でも使用できるため、請求書、レポート、証明書などの文書を生成するのに理想的です。 PDFテンプレートエディタを使用して編集できます。

  3. JSONデータ統合: CraftMyPDFはJSONデータとのシームレスな統合を可能にします。 これにより、テンプレートに動的なデータを供給してカスタマイズされたPDF文書を生成できます。 この機能は、パーソナライズされた請求書や詳細なレポートのように可変コンテンツを含む文書を作成する必要があるアプリケーションに特に便利です。

  4. 高度な書式設定と式: APIは高度な書式設定オプションと式をサポートし、複雑な文書を作成することができます。 あなたの指定に従って日付、数字、通貨をフォーマットし、データに基づいてコンテンツを動的に生成するための式を使用できます。

  5. API統合: CraftMyPDFはそのREST APIを使用してさまざまなプラットフォームと統合できます。 ZapierやMake.comなどのノーコードプラットフォーム、およびカスタムアプリケーションと統合をサポートしています。 この柔軟性により、開発者はPDF生成機能をワークフローに組み込み、文書作成プロセスを自動化できます。

  6. 記入可能なコンポーネント: プラットフォームはテキストフィールド、チェックボックス、プルダウンメニューなどの記入可能なPDFコンポーネントもサポートしています。 この機能は、ユーザーが電子的に記入できるインタラクティブフォームを作成するために不可欠です。

  7. セキュリティとコンプライアンス: CraftMyPDFは生成されたPDFへの安全なアクセスを保証し、GDPRなどのデータ保護規制に準拠した地域APIエンドポイントをサポートしています。 このセキュリティへの取り組みにより、機密文書を扱う信頼できる選択肢となります。

2. IronPDFの紹介

IronPDF PDFライブラリ for .NET開発者は、.NET開発者向けに設計された堅牢で多用途なPDFライブラリで、PDF文書の生成、編集、および管理において広範な機能を提供します。 C#で記述されたIronPDFは、開発者がHTML、CSS、JavaScript、画像形式からピクセルパーフェクトなPDF文書を生成できるようにし、PDFの取り扱いを簡素化します。 .NETとの統合により、シンプルなファイル生成から複雑なドキュメント操作までのすべてのアプリケーションにおけるPDF機能に最適なツールとなります。

2.1 IronPDFの主な機能

  1. HTML to PDF変換: IronPDFはHTML、CSS、JavaScriptを直接PDF文書に変換することに長けています。 HTML5およびCSS3をサポートしており、生成されたPDFでWebコンテンツが意図した通りに見えることを保証します。 変換プロセスはピクセルパーフェクトの精度を維持し、Web-to-Printアプリケーションに最適です。

  2. URL to PDF: 任意のURLからPDFを生成でき、WebページをPDFファイルとして簡単に保存できます。 この機能はWebコンテンツをアーカイブしたり、オンラインデータからレポートを生成するのに役立ちます。

  3. 画像 to PDF: IronPDFはJPG、PNG、GIF、BMP、SVGなどのさまざまな画像形式をPDF文書に変換することをサポートしています。 この機能はフォトブックやイメージギャラリーを作成する際や、PDFに視覚的なコンテンツを統合する際に便利です。

  4. フォーム記入とデータ抽出: ライブラリはPDF形式をプログラムによって作成および記入することを可能にします。 さらに、既存のフォームからデータを抽出して、他のシステムとのシームレスなデータ処理と統合を可能にします。

  5. デジタル署名とセキュリティ: IronPDFは、デジタル署名の追加、パスワード設定、ユーザー権限の定義などの強力なセキュリティ機能を提供しています。 これにより、PDF文書がセキュアで業界標準に準拠していることを保証します。

  6. PDF編集: 既存のPDF文書を編集して、ページを追加、コピー、削除できます。 既存のPDFファイルをインポートします。 IronPDFでは、PDFの結合や分割も可能で、文書管理において包括的なツールとなります。

  7. 注釈と添付ファイル: IronPDFは、PDF文書内に枝状メモや添付ファイルを埋め込む注釈の追加をサポートしています。 この機能は、共同作業での文書レビューおよび補足情報の追加に役立ちます。

  8. ヘッダー、フッター、および透かし: PDF文書にカスタムヘッダー、フッター、および透かしを追加できます。 これらの要素はHTMLから生成でき、デザインとコンテンツ管理において柔軟性を提供します。

  9. クロスプラットフォーム互換性: IronPDFは、Windows、macOS、Linux、Docker、Azure、AWSを含むさまざまなプラットフォームでシームレスに動作します。 .NET Core、.NET Standard、および.NET Frameworkをサポートしており、幅広い互換性と多様な環境での導入の容易さを確保します。

  10. パフォーマンスの最適化: フルマルチスレッドと非同期サポートにより、IronPDFはバッチ処理や大規模なPDF生成タスクのパフォーマンスを最適化します。 これにより、リソースの効率的な使用とより高速な文書処理を実現します。

  11. 包括的なドキュメントとサポート: IronPDFには、豊富なドキュメント、チュートリアル、および例が付属しており、開発者が簡単に開始できるようにしています。 ライブラリはまた、24/5の技術サポートを提供し、ユーザーが問題を迅速に解決するのを支援します。

  12. 外部依存関係なし: IronPDFは追加のソフトウェアやインストールを必要とせずに単一のDLLとして動作します。 これによりデプロイが簡素化され、他のソフトウェアコンポーネントとの潜在的な競合が減少します。

IronPDFは、.NETアプリケーション内での生産性を向上させ、PDF管理を合理化するために設計されています。 豊富な機能と使いやすさ、包括的なサポートの組み合わせにより、開発者にとって貴重なツールです。

3. Visual StudioでのC#アプリケーションの作成

Visual StudioでC#コンソールアプリケーションを作成するには、いくつかのステップが必要です。 プロジェクトをセットアップし、開始するのに役立つ詳細なガイドは以下です。

3.1. Visual Studioを開く

まず、コンピュータにVisual Studioがインストールされていることを確認します。 スタートメニューでVisual Studioを検索するか、デスクトップアイコンをクリックして開きます。

3.2. 新しいプロジェクトを作成

Visual Studioが開いたら、次の手順で新しいプロジェクトを作成します:

  1. スタートページで「新しいプロジェクトを作成」をクリックします。

  2. 「新しいプロジェクトを作成」ウィンドウで、プロジェクトテンプレートのリストが表示されます。 検索バーを使用して「コンソールアプリ」を見つけるか、テンプレートのリストから選択します。

3.3. プロジェクトテンプレートを選択

検索結果またはリストから、「コンソールアプリ (.NET Core)」または「コンソールアプリ (.NET Framework)」を選択します。プロジェクトの要件または好みに応じて選択します。

3.4. プロジェクトを構成する

コンソールアプリテンプレートを選択した後、新しいプロジェクトを構成する必要があります:

  1. プロジェクト名: プロジェクトの名前を入力します。 これはプロジェクトファイルが保存されるフォルダ名になります。

  2. 場所: プロジェクトを保存したいフォルダを選択します。

  3. ソリューション名: これは通常プロジェクト名と同じですが、1つのソリューションで複数のプロジェクトを持つ予定がある場合は変更できます。

  4. 「作成」をクリックして続行します。

4. IronPDFのインストール

IronPDFを使い始めるには、NuGetパッケージマネージャーを使用する方法、NuGetパッケージマネージャーコンソールを使用する方法、およびNuGetサイトからのダウンロードという3つの主要なインストール方法があります。

4.1 NuGetパッケージマネージャー

まず、NuGetパッケージマネージャーについて説明します。 Visual Studioを使用している場合、この方法は簡単かつユーザーフレンドリーです。 プロジェクトを開き、ソリューションエクスプローラーで「参照」または「依存関係」ノードを右クリックします。 コンテキストメニューから「NuGetパッケージを管理」を選択します。

NuGetパッケージマネージャーで、「参照」タブが選択されていることを確認し、「IronPDF」を検索ボックスに入力します。 IronPDFパッケージを見つけたら「インストール」をクリックします。この操作により、IronPDFライブラリがプロジェクトに追加され、使用できるように構成されます。

CraftMyPDFとIronPDFの比較: 図2 - NuGetパッケージマネージャー経由でIronPDFを検索

4.2 NuGetパッケージマネージャーコンソール

次に、NuGetパッケージマネージャーコンソールは、IronPDFをインストールするための別の便利な方法です。 これにアクセスするには、Visual Studioの「ツール」メニューに移動し、「NuGetパッケージマネージャー」を選択し、「パッケージマネージャーコンソール」を選択します。次のコマンドをコンソールウィンドウに入力します:

Install-Package IronPdf

Enterを押します。 このコマンドは、IronPDFパッケージを直接プロジェクトにダウンロードしてインストールします。 この方法は、Visual Studio環境内でコマンドラインツールを使用することを好む人にとっては効率的です。

4.3 NuGetサイト

最後に、NuGetサイトからIronPDFパッケージを直接ダウンロードできます。 この方法は、パッケージバージョンを手動で管理する必要がある場合、または直接のパッケージ管理が制限されている環境で作業している場合に特に便利です。 NuGetサイトにアクセスして「IronPDF」と検索します。パッケージファイル(通常は.nupkgファイル)をダウンロードします。

ダウンロード後、Visual Studioでプロジェクトを開き、「参照」または「依存関係」を右クリックし、「NuGetパッケージを管理」を選択します。「設定」アイコンをクリックし、追加したいパッケージへのパスを指定します。 パッケージソースを追加したら、「参照」タブに戻り、新しいソースを選択してIronPDFをインストールします。

5. CraftMyPDFの使用

C#プログラムでCraftMyPDFを使用するには、まずアカウントを作成し、APIの無料プランを選択し、それをアプリケーションに統合する必要があります。 以下は、その方法です:

5.1. アカウントの作成と無料プランの選択

  1. サインアップ: CraftMyPDFウェブサイトにアクセスし、無料アカウントにサインアップします。 アカウントを作成するために必要な情報を入力します。

  2. 無料プランの選択: アカウントが作成されたら、価格設定セクションに移動し、無料プランを選択します。 このプランは通常、開発とテスト目的に理想的な限定機能とクォータでAPIを使用できるようにします。

CraftMyPDFとIronPDFの比較: 図3 - CraftMyPDFアカウントページ

  1. APIキーの取得: プランを選択した後、アカウントダッシュボードに移動します。 ここで、APIキーが見つかります。 このキーはAPIリクエストを認証するために必要です。

5.2 必要なライブラリのインストール

HTTPリクエストをCraftMyPDF APIに送るために、System.Net.Http, RestSharp、およびNewtonsoft JSONネームスペースを使用できるようにしてください。

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

その後、CraftMyPDF APIへのAPIコールを行います。

var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
Dim client = New RestClient("https://api.craftmypdf.com/v1/create")
Dim request = New RestRequest(Method.Post)
Dim apiKey As String = "API Key" ' Replace with your actual API key
Dim templateId As String = "Template ID" ' Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey)
request.AddHeader("Content-Type", "application/json")
$vbLabelText   $csharpLabel

6. PDFの作成

プログラムでPDFを作成することで、レポート、請求書、証明書などの文書生成を自動化できます。 IronPDFはC#でPDFを作成するためのいくつかの方法を提供しており、これにはHTML文字列、URL、HTMLファイルからPDFドキュメントに変換することが含まれます。 これらの方法の詳細については、後のセクションで説明します。

6.1 IronPDFを使用してPDFを作成する

6.1.1 HTML to PDF

HTMLをPDFに変換することは最も一般的な使用例の1つです。 HTMLとCSSを使用して文書を設計し、それをPDFに変換することができます。 この方法は非常に柔軟で、最新のウェブ標準に対応しており、結果のPDFが設計通りに見えることを保証します。 以下はIronPDFを使用してHTML文字列をPDF文書に変換する基本的な例です:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Define your HTML string
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
        // Render the HTML as a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs("html_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Define your HTML string
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
        // Render the HTML as a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs("html_output.pdf");
    }
}
Imports IronPdf
Public Class PDFCreator
	Public Sub CreatePdfFromHtml()
		Dim renderer = New ChromePdfRenderer()
		' Define your HTML string
		Dim htmlContent As String = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>"
		' Render the HTML as a PDF document
		Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF document
		pdfDocument.SaveAs("html_output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

CraftMyPDFとIronPDFの比較: 図4 - IronPDFを使用した上記コードの例出力

この例では、ChromePdfRendererが提供されたHTML文字列をPDFに変換します。 レンダリングされたPDFはファイルシステムに保存されます。

6.1.2 URL to PDF

IronPDFのもう1つの強力な機能は、URLから直接WebページをPDFドキュメントに変換する能力です。 これはWebページをアーカイブしたり、動的なWebコンテンツからPDFを生成するのに特に役立ちます。 以下はURLをPDFドキュメントに変換する方法の例です:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromUrl(string url)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the URL as a PDF document
        var pdfDocument = renderer.RenderUrlAsPdf(url);
        // Save the PDF document
        pdfDocument.SaveAs("url_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromUrl(string url)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the URL as a PDF document
        var pdfDocument = renderer.RenderUrlAsPdf(url);
        // Save the PDF document
        pdfDocument.SaveAs("url_output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

CraftMyPDFとIronPDFの比較: 図5 - IronPDFホームページ

この方法はURLを入力として取り、WebページをPDFにレンダリングし、結果の文書を保存します。 HTML、CSS、JavaScript、画像を含むすべてのWebコンテンツを処理し、PDFが元のWebページを正確に反映することを保証します。

6.1.3 HTMLファイル to PDF

HTMLファイルをPDFに変換することは、HTML文字列やURLを変換することと似ています。 この方法により、ローカルのHTMLファイルを使用でき、ファイルシステムに保存された既存のWebページやテンプレートからPDFを生成することが便利です。 以下はHTMLファイルをPDFに変換する方法です:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtmlFile(string filePath)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the HTML file as a PDF document
        var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
        // Save the PDF document
        pdfDocument.SaveAs("html_file_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtmlFile(string filePath)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the HTML file as a PDF document
        var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
        // Save the PDF document
        pdfDocument.SaveAs("html_file_output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この例では、RenderHtmlFileAsPdfメソッドを使用して、ファイルパスで指定されたHTMLファイルの内容をPDFドキュメントに変換します。 得られたPDFはその後保存されます。

これらの方法を活用することで、IronPDFを使用してさまざまなHTMLコンテンツソースからPDFを作成でき、C#アプリケーションでの文書生成のための柔軟で強力なソリューションを提供します。 これらの方法は動的なWebコンテンツ、ローカルHTMLファイル、直接定義されたHTML文字列を使用してPDF作成機能を簡単に統合できることを保証します。

6.2 CraftMyPDF APIを使用してPDFを作成する

CraftMyPDFはテンプレートからPDFを生成するための柔軟なAPIを提供します。 このAPIを使用してPDFを作成するには、最初にCraftMyPDFダッシュボードでテンプレートを作成する必要があります。 テンプレートが準備できたら、データを送信してAPIにリクエストすることで、PDFを生成できます。 これを実現するための手順は以下の通りです。

6.2.1 テンプレートの作成

  1. CraftMyPDFダッシュボードにログイン: CraftMyPDFアカウントにサインインし、ダッシュボードに移動します。

  2. 新しいテンプレートを作成: 「テンプレートの作成」ボタンをクリックします。 ドラッグアンドドロップエディタを使用してPDFテンプレートを設計します。 必要に応じてテキスト、画像、テーブルなどの要素を含めることができます。

  3. テンプレートを保存: デザインに満足したら、テンプレートを保存します。 テンプレートIDが提供され、これを使用して生成したPDFをこのテンプレートを使用して作成します。

CraftMyPDFとIronPDFの比較: 図6 - CraftMyPDFダッシュボード

6.2.2 PDF生成のためのリクエストの送信

テンプレートを作成した後、以下のC#コードを使用してCraftMyPDF APIにリクエストを送信してPDFを生成します。

using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.Post);
        string apiKey = "API-Key"; // Replace with your actual API key
        string templateId = "Template-ID"; // Replace with your actual template ID
        request.AddHeader("X-API-KEY", apiKey);
        request.AddHeader("Content-Type", "application/json");
        var body = new
        {
            data = new
            {
                invoice_number = "INV48321",
                date = "2024-05-27",
                due_date = "2024-06-27",
                currency = "EUR",
                discount = 10,
                tax = 5,
                company_name = "Tech Innovations Ltd",
                email = "contact@techinnovations.com",
                client = "Future Solutions GmbH",
                client_address = "1234 Innovation Drive",
                client_address2 = "Berlin",
                client_address3 = "10115",
                items = new[]
                {
                    new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
                    new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
                    new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
                    new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
                    new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
                },
                gross_total = 3400
            },
            load_data_from = (string)null,
            template_id = templateId,
            version = 8,
            export_type = "json",
            expiration = 60,
            output_file = "output.pdf",
            is_cmyk = false,
            image_resample_res = 600,
            direct_download = 0,
            cloud_storage = 1
        };
        request.AddJsonBody(body);
        RestResponse response = await client.ExecuteAsync(request);
        Console.WriteLine(response.Content);
        if (response.IsSuccessful)
        {
            var content = response.Content;
            dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
            string fileUrl = result.file;
            string localPath = "f:\\downloaded_output.pdf";
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile(fileUrl, localPath);
            }
            Console.WriteLine($"PDF downloaded successfully to {localPath}");
        }
        else
        {
            Console.WriteLine($"Error: {response.Content}");
        }
    }
}
using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.Post);
        string apiKey = "API-Key"; // Replace with your actual API key
        string templateId = "Template-ID"; // Replace with your actual template ID
        request.AddHeader("X-API-KEY", apiKey);
        request.AddHeader("Content-Type", "application/json");
        var body = new
        {
            data = new
            {
                invoice_number = "INV48321",
                date = "2024-05-27",
                due_date = "2024-06-27",
                currency = "EUR",
                discount = 10,
                tax = 5,
                company_name = "Tech Innovations Ltd",
                email = "contact@techinnovations.com",
                client = "Future Solutions GmbH",
                client_address = "1234 Innovation Drive",
                client_address2 = "Berlin",
                client_address3 = "10115",
                items = new[]
                {
                    new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
                    new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
                    new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
                    new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
                    new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
                },
                gross_total = 3400
            },
            load_data_from = (string)null,
            template_id = templateId,
            version = 8,
            export_type = "json",
            expiration = 60,
            output_file = "output.pdf",
            is_cmyk = false,
            image_resample_res = 600,
            direct_download = 0,
            cloud_storage = 1
        };
        request.AddJsonBody(body);
        RestResponse response = await client.ExecuteAsync(request);
        Console.WriteLine(response.Content);
        if (response.IsSuccessful)
        {
            var content = response.Content;
            dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
            string fileUrl = result.file;
            string localPath = "f:\\downloaded_output.pdf";
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile(fileUrl, localPath);
            }
            Console.WriteLine($"PDF downloaded successfully to {localPath}");
        }
        else
        {
            Console.WriteLine($"Error: {response.Content}");
        }
    }
}
'INSTANT VB NOTE: 'Option Strict Off' is used here since dynamic typing is used:
Option Strict Off

Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports RestSharp

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim client = New RestClient("https://api.craftmypdf.com/v1/create")
		Dim request = New RestRequest(Method.Post)
		Dim apiKey As String = "API-Key" ' Replace with your actual API key
		Dim templateId As String = "Template-ID" ' Replace with your actual template ID
		request.AddHeader("X-API-KEY", apiKey)
		request.AddHeader("Content-Type", "application/json")
		Dim body = New With {
			Key .data = New With {
				Key .invoice_number = "INV48321",
				Key .date = "2024-05-27",
				Key .due_date = "2024-06-27",
				Key .currency = "EUR",
				Key .discount = 10,
				Key .tax = 5,
				Key .company_name = "Tech Innovations Ltd",
				Key .email = "contact@techinnovations.com",
				Key .client = "Future Solutions GmbH",
				Key .client_address = "1234 Innovation Drive",
				Key .client_address2 = "Berlin",
				Key .client_address3 = "10115",
				Key .items = {
					New With {
						Key .description = "Cloud Hosting Services",
						Key .quantity = 12,
						Key .unit_price = 75,
						Key .total = 900
					},
					New With {
						Key .description = "Custom Web Application",
						Key .quantity = 3,
						Key .unit_price = 150,
						Key .total = 450
					},
					New With {
						Key .description = "Technical Support",
						Key .quantity = 15,
						Key .unit_price = 30,
						Key .total = 450
					},
					New With {
						Key .description = "Digital Marketing Campaign",
						Key .quantity = 2,
						Key .unit_price = 500,
						Key .total = 1000
					},
					New With {
						Key .description = "SEO Optimization",
						Key .quantity = 5,
						Key .unit_price = 120,
						Key .total = 600
					}
				},
				Key .gross_total = 3400
			},
			Key .load_data_from = DirectCast(Nothing, String),
			Key .template_id = templateId,
			Key .version = 8,
			Key .export_type = "json",
			Key .expiration = 60,
			Key .output_file = "output.pdf",
			Key .is_cmyk = False,
			Key .image_resample_res = 600,
			Key .direct_download = 0,
			Key .cloud_storage = 1
		}
		request.AddJsonBody(body)
		Dim response As RestResponse = Await client.ExecuteAsync(request)
		Console.WriteLine(response.Content)
		If response.IsSuccessful Then
			Dim content = response.Content
'INSTANT VB NOTE: In the following line, Instant VB substituted 'Object' for 'dynamic' - this will work in VB with Option Strict Off:
			Dim result As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(content)
			Dim fileUrl As String = result.file
			Dim localPath As String = "f:\downloaded_output.pdf"
			Using webClient As New WebClient()
				webClient.DownloadFile(fileUrl, localPath)
			End Using
			Console.WriteLine($"PDF downloaded successfully to {localPath}")
		Else
			Console.WriteLine($"Error: {response.Content}")
		End If
	End Function
End Class
$vbLabelText   $csharpLabel

CraftMyPDFとIronPDFの比較: 図7 - 成功した応答オブジェクトを指示する出力例

これがPDF生成API CraftMyPdfによって生成されたPDF文書です:

CraftMyPDFとIronPDFの比較: 図8 - PDF生成API CraftMyPdfからの例出力

Bootstrapによる請求書生成

プロフェッショナルな請求書生成には、モダンでレスポンシブなレイアウトが必要です。 このBootstrap 5の例は、 IronPDFが外部APIやテンプレートを使用せずにピクセル完璧な請求書を作成できることを示しています。

using IronPdf;

var renderer = new ChromePdfRenderer();

string professionalInvoice = @"
<!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>
        .invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
        .invoice-table th { background: #f8f9fa; }
        @media print { .invoice-box { page-break-inside: avoid; } }
    </style>
</head>
<body>
    <div class='container my-4'>
        <div class='card shadow-lg invoice-box'>
            <div class='invoice-header p-4'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h1 class='mb-0'>INVOICE</h1>
                        <p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
                    </div>
                    <div class='col-md-4 text-md-end'>
                        <h3 class='mb-0'>$3,400.00</h3>
                        <small class='opacity-75'>Due: June 27, 2024</small>
                    </div>
                </div>
            </div>

            <div class='card-body p-4'>
                <div class='row mb-4'>
                    <div class='col-md-6'>
                        <h6 class='text-primary text-uppercase mb-2'>From</h6>
                        <strong>Tech Innovations Ltd</strong><br>
                        contact@techinnovations.com
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
                        <strong>Future Solutions GmbH</strong><br>
                        1234 Innovation Drive<br>
                        Berlin, 10115
                    </div>
                </div>

                <table class='table invoice-table'>
                    <thead>
                        <tr>
                            <th>Description</th>
                            <th class='text-center'>Qty</th>
                            <th class='text-end'>Unit Price</th>
                            <th class='text-end'>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Cloud Hosting Services</td>
                            <td class='text-center'>12</td>
                            <td class='text-end'>€75.00</td>
                            <td class='text-end'>€900.00</td>
                        </tr>
                        <tr>
                            <td>Custom Web Application</td>
                            <td class='text-center'>3</td>
                            <td class='text-end'>€150.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Technical Support</td>
                            <td class='text-center'>15</td>
                            <td class='text-end'>€30.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Digital Marketing Campaign</td>
                            <td class='text-center'>2</td>
                            <td class='text-end'>€500.00</td>
                            <td class='text-end'>€1,000.00</td>
                        </tr>
                        <tr>
                            <td>SEO Optimization</td>
                            <td class='text-center'>5</td>
                            <td class='text-end'>€120.00</td>
                            <td class='text-end'>€600.00</td>
                        </tr>
                    </tbody>
                </table>

                <div class='row justify-content-end'>
                    <div class='col-md-4'>
                        <table class='table table-sm'>
                            <tr>
                                <td>Subtotal:</td>
                                <td class='text-end'><strong>€3,400.00</strong></td>
                            </tr>
                            <tr>
                                <td>Discount (10%):</td>
                                <td class='text-end text-success'>-€340.00</td>
                            </tr>
                            <tr>
                                <td>Tax (5%):</td>
                                <td class='text-end'>€153.00</td>
                            </tr>
                            <tr class='table-primary'>
                                <td><strong>Total Due:</strong></td>
                                <td class='text-end'><strong>€3,213.00</strong></td>
                            </tr>
                        </table>
                    </div>
                </div>

                <div class='alert alert-info mt-4'>
                    <strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
                </div>

                <div class='row mt-4 pt-3 border-top'>
                    <div class='col-md-6'>
                        <small class='text-muted'>Generated with IronPDF - No external APIs required</small>
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <span class='badge bg-success'>PAID</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string professionalInvoice = @"
<!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>
        .invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
        .invoice-table th { background: #f8f9fa; }
        @media print { .invoice-box { page-break-inside: avoid; } }
    </style>
</head>
<body>
    <div class='container my-4'>
        <div class='card shadow-lg invoice-box'>
            <div class='invoice-header p-4'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h1 class='mb-0'>INVOICE</h1>
                        <p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
                    </div>
                    <div class='col-md-4 text-md-end'>
                        <h3 class='mb-0'>$3,400.00</h3>
                        <small class='opacity-75'>Due: June 27, 2024</small>
                    </div>
                </div>
            </div>

            <div class='card-body p-4'>
                <div class='row mb-4'>
                    <div class='col-md-6'>
                        <h6 class='text-primary text-uppercase mb-2'>From</h6>
                        <strong>Tech Innovations Ltd</strong><br>
                        contact@techinnovations.com
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
                        <strong>Future Solutions GmbH</strong><br>
                        1234 Innovation Drive<br>
                        Berlin, 10115
                    </div>
                </div>

                <table class='table invoice-table'>
                    <thead>
                        <tr>
                            <th>Description</th>
                            <th class='text-center'>Qty</th>
                            <th class='text-end'>Unit Price</th>
                            <th class='text-end'>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Cloud Hosting Services</td>
                            <td class='text-center'>12</td>
                            <td class='text-end'>€75.00</td>
                            <td class='text-end'>€900.00</td>
                        </tr>
                        <tr>
                            <td>Custom Web Application</td>
                            <td class='text-center'>3</td>
                            <td class='text-end'>€150.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Technical Support</td>
                            <td class='text-center'>15</td>
                            <td class='text-end'>€30.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Digital Marketing Campaign</td>
                            <td class='text-center'>2</td>
                            <td class='text-end'>€500.00</td>
                            <td class='text-end'>€1,000.00</td>
                        </tr>
                        <tr>
                            <td>SEO Optimization</td>
                            <td class='text-center'>5</td>
                            <td class='text-end'>€120.00</td>
                            <td class='text-end'>€600.00</td>
                        </tr>
                    </tbody>
                </table>

                <div class='row justify-content-end'>
                    <div class='col-md-4'>
                        <table class='table table-sm'>
                            <tr>
                                <td>Subtotal:</td>
                                <td class='text-end'><strong>€3,400.00</strong></td>
                            </tr>
                            <tr>
                                <td>Discount (10%):</td>
                                <td class='text-end text-success'>-€340.00</td>
                            </tr>
                            <tr>
                                <td>Tax (5%):</td>
                                <td class='text-end'>€153.00</td>
                            </tr>
                            <tr class='table-primary'>
                                <td><strong>Total Due:</strong></td>
                                <td class='text-end'><strong>€3,213.00</strong></td>
                            </tr>
                        </table>
                    </div>
                </div>

                <div class='alert alert-info mt-4'>
                    <strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
                </div>

                <div class='row mt-4 pt-3 border-top'>
                    <div class='col-md-6'>
                        <small class='text-muted'>Generated with IronPDF - No external APIs required</small>
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <span class='badge bg-success'>PAID</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

出力: Bootstrap 5のグラデーションヘッダー、レスポンシブテーブル、計算サマリーを備えたプロフェッショナルな請求書PDF。 IronPDFはすべてのCSSグラデーション、テーブルスタイリング、ユーティリティクラスを完璧な精度でレンダリングします。外部APIコールなし、テンプレートなし、インターネット接続不要です。 CraftMyPDFのクラウドベースのアプローチとは異なり、IronPDFはサーバー上で即座に請求書を生成し、完全に制御します。

Bootstrapテーブルサポートについての詳細は、Bootstrap & Flexbox CSSガイドを参照してください。

コードの説明

  1. RestClientとRestRequestのセットアップ: CraftMyPDF APIのURLでRestClientを作成し、POSTメソッドのためにPDFを生成するためのRestRequestを作成します。

  2. ヘッダーの追加: APIキーをリクエストヘッダーに認証のために追加します。 コンテンツタイプをapplication/jsonに設定します。

  3. リクエストボディの準備: リクエストボディはJSONオブジェクトとして作成されます。 テンプレートフィールドを埋め込むためのデータ、テンプレートID、エクスポートタイプや有効期限などのオプションが含まれています。

  4. リクエストの送信: ExecuteAsyncを使ってリクエストを非同期に送信し、リクエストボディに基づいてPDF文書を生成します。

  5. 応答の処理: 応答が成功した場合、生成されたPDFファイルのURLが応答から抽出され、WebClientを使用してローカルパスにファイルがダウンロードされます。 リクエストが失敗した場合、エラーメッセージが表示されます。

7. ライセンス

CraftMyPDFとIronPDFの比較: 図9 - IronPDFとDinktoPDFの比較: 図10 - IronPDFのライセンスオプション。

IronPDFは、さまざまなユーザーニーズに応えるためにさまざまなライセンスオプションを提供しています。 主なライセンスには、Lite、Professional、およびEnterpriseエディションがあります。 Liteライセンスは$799で、1つのプロジェクトに取り組む単一の開発者に適しています。 Professionalライセンスは$1,199で、複数のプロジェクトと開発者をサポートし、Enterpriseライセンスはより大きなチームとより広範なデプロイメントのために$2,399で設計されています。 各ライセンスは一度限りの料金で、1年間のサポートと更新が含まれています。 さらに、IronPDFを商用製品の一部として配布するためのOEMリディストリビューションライセンスもあります。 IronPDFも評価目的のための無料トライアルを提供しています。

CraftMyPDFはサブスクリプションベースのライセンスモデルで運営されています。 いくつかのプランがあり、小規模および開発目的に理想的な無料ティアも含まれています。 この無料プランはAPIの限定使用を許可し、テストや小規模プロジェクトに最適です。 より多くの使用のためには、APIコール制限と追加機能を提供する有料プランがあります。 これらの有料プランは、ビジネスのニーズに合わせて拡張され、柔軟性と強力なサポートを提供します。 ユーザーはCraftMyPDFウェブサイトを通じてこれらのプランをサブスクライブし、ダッシュボードを通じてサブスクリプションやAPIキーを管理できます。

この機能により、ソース ファイルやドキュメント内の情報を直接反映する動的なコンテンツが利用可能になります。

8.1 IronPDFのドキュメントとサポート

IronPDFは豊富なドキュメントと堅固なサポートを提供してライブラリを効果的に利用できるようにしています。 ドキュメントは包括的で、詳細なガイド、例、および新しいユーザーがすぐに始められるようにするためのクイックスタートセクションが含まれています。 主なセクションでは基本的な使用方法、高度な設定、およびトラブルシューティングをカバーしています。 さらに、IronPDFは広範な知識ベース、メールサポート、より複雑な問題のためのエンジニアリングサポートリクエストを含むさまざまなチャンネルを通じてサポートを提供します。 サポートチームは24/5で利用可能で、ユーザーのクエリと問題を迅速に解決するために迅速な支援を提供します。

8.2 CraftMyPdfのドキュメントとサポート

CraftMyPDFもそのユーザーのために詳細なドキュメントとサポートを提供しています。 APIドキュメントはすべての利用可能なエンドポイント、パラメータ、および例リクエストに関する詳細情報を提供し、開発者がAPIをスムーズに統合できるようにしています。 ドキュメントにはテンプレートの作成、APIリクエストの作成、および応答の処理に関するガイドが含まれています。 CraftMyPDFはメールを通じてカスタマーサポートを提供し、ユーザーが質問をしたり洞察を共有できるコミュニティフォーラムも提供しています。 ドキュメントはユーザーフレンドリーに設計されており、すべてのスキルレベルの開発者がPDFを生成するためにAPIを効果的に使用できるようになります。

9. 結論

この記事では、PDFを生成するための強力なツールであるIronPDFとCraftMyPDFの機能、ライセンス、およびドキュメントについて探りました。 両方のツールはPDF文書の作成と管理において強力な機能を提供しますが、IronPDFは複数の顕著な利点を持っています。

IronPDFは、HTML文字列、URL、およびHTMLファイルをPDFに容易に変換することを含む、幅広いPDF生成ニーズに応えるための包括的な機能セットを提供します。 .NET環境とのシームレスな統合と、複雑な文書構造を処理する能力により、高度に汎用性の高いツールとなっています。 さらに、IronPDFはヘッダーとフッターの追加、デジタル署名、PDFフォームの処理など、さまざまなアプリケーションのニーズを満たすために高度なオプションをサポートしています。

IronPDFの大きな利点の1つはそのライセンス構造です。 ユーザーが購入前にソフトウェアを評価できるように無料トライアルを提供しています。 ライセンスは$799から始まり、個々の開発者や小規模チームにも手の届くものになっています。 さらに、IronPDFは、Iron Suiteを提供し、これは9つの製品を2つの価格で含んでいるため、包括的なPDFおよびドキュメント管理ニーズに対するコスト効率の良い選択です。

まとめると、IronPDFとCraftMyPDFはどちらもPDF生成に優れたツールですが、IronPDFはより広範な機能セット、堅固なサポート、そしてより有利なライセンスモデルを提供しています。 複雑な文書要件を処理する能力と、コスト効率の良いIron SuiteパッケージによってCraftMyPDFよりも優れています。 個々の開発者でも大規模なチームの一部でも、IronPDFはすべてのPDF生成ニーズに信頼性が高く強力なソリューションを提供します。

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

よくある質問

APIベースのソリューションよりもC# PDFライブラリを使う利点は何ですか?

.NET開発環境とシームレスに統合できる拡張機能を提供し、強力なサポートとコスト効果の高いライセンスオプションを備えた包括的なPDFライブラリであるIronPDFは、複雑な文書処理に優れているとされています。

C#を使用してHTMLコンテンツをPDFドキュメントに変換するにはどうすればいいですか?

IronPDFを使用してHTMLコンテンツをPDF文書に変換できます。HTML5とCSS3をサポートしており、生成されたPDFでWebコンテンツが正確にレンダリングされることを保証します。

PDF生成においてIronPDFの注目すべき機能は何ですか?

IronPDFはデジタル署名、フォーム入力、PDF編集、注釈、クロスプラットフォーム互換性を提供します。HTML、URL、画像をPDFに変換するのに優れた性能と最適化を実現しています。

CraftMyPDFはPDFテンプレート設計をどのように扱いますか?

CraftMyPDFは、ユーザーがコードを書く必要なくPDFテンプレートを設計できるウェブベースのドラッグ&ドロップエディターを提供します。これはJSONデータ統合をサポートし、カスタマイズされたPDFドキュメントの作成を可能にします。

IronPDFのようなPDFツールにはどのようなライセンスオプションがありますか?

IronPDFは柔軟なライセンスオプションを提供しており、Lite、Professional、およびEnterpriseライセンスには一度限りの料金があります。また、機能を探索できる無料トライアルも新規ユーザーに提供しています。

C#アプリケーションにPDF生成APIを統合するにはどうすればいいですか?

CraftMyPDFのようなPDF生成APIを統合するには、アカウントを作成し、適切なプランを選び、APIキーを取得し、System.Net.HttpやRestSharpのようなライブラリを使用してAPIコールを行う必要があります。

IronPDFを使用する開発者向けにどのようなサポートリソースがありますか?

IronPDFは広範な文書、チュートリアル、24/5の技術サポートを提供しています。これらのリソースは、開発者がプロジェクトでライブラリを効率的に実装しトラブルシューティングするのに役立ちます。

C#アプリケーションにIronPDFをインストールするにはどうすればいいですか?

IronPDFはVisual StudioのNuGetパッケージマネージャーを使用してインストールできます。または、NuGetパッケージマネージャーコンソールを使用するか、NuGetウェブサイトから直接パッケージをダウンロードすることも可能です。

IronPDFはPDFドキュメントのセキュリティとインタラクティブ性をどのように強化しますか?

IronPDFはデジタル署名やフォーム処理の機能をサポートし、文書のセキュリティとインタラクティブ性を向上させ、包括的なPDF管理に適しています。

Curtis Chau
テクニカルライター

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

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