IronPDFとiText7の比較
PDFを操作するための適切でシンプルなツールは、PDFドキュメントの作成と編集に関わる多くの作業とプロセスを合理化することができます。 .NETエコシステムには、IronPDFとiTextという2つの人気のあるライブラリがあり、Adobeに依存せずにPDFを生成することができます。 それぞれ、作成、編集、変換など様々な機能を提供していますが、この記事ではこれらのライブラリを次の3つの基準で比較します: 提供される機能、提供されるドキュメントの品質、そして製品を使用するために採用された価格政策。
IronPDFとiTextの概要
IronPDFは、プログラマーがPDFドキュメントを簡単に作成、修正、やり取りすることができる著名な.NET PDFライブラリです。 それは、Core、8、7、6、Frameworkなどの異なる.NET環境で使用でき、多様な開発要件に対して非常に柔軟です。 IronPDFの主な機能は、HTMLからPDFへの変換、PDFのマージ機能、PDFの暗号化、およびデジタル署名の適用など豊富な機能セットにあります。 ドキュメントはユーザーが理解しやすいように書かれており、ライブラリ自体は強力な技術サポートを持っています。
iTextはJavaや.NET (C#)用の最も人気のあるPDFライブラリの一つです。 iText Core 8は、PDFファイルの作成と操作のためのエンタープライズレベルのプログラマブルソリューションを提供します。 iTextは多くの異なる機能をサポートし、オープンソース(AGPL)ライセンスと商用ライセンスの両方でリリースされています。 これは、その多様性のおかげで、デジタルトランスフォーメーションプロジェクトで広範なユースケースに対応できることを意味します。
クロスプラットフォームの互換性
IronPDFとiTextは様々なプラットフォームと互換性があります; それらは様々なシステムと.NETフレームワークに渡ってPDFを処理できます。 以下で各製品のサポートされているフレームワークとプラットフォームを比較します。
IronPDF:
IronPDFサポートプラットフォームの概要は、さまざまなシステムでのシームレスな統合と展開を可能にする、広範なプラットフォームと環境をサポートしています:
.NET バージョン:
- .NET Core (8, 7, 6, 5, および 3.1+)
- .NET Standard (2.0+)
- .NET Framework (4.6.2+)
アプリ環境: IronPDFは、Windows、Linux、Mac、Docker、Azure、AWSを含むアプリ環境で動作します。
IDEs: Microsoft Visual Studio、JetBrains Rider、ReSharperなどのIDEで動作します。
- OSとプロセッサー: Windows、Mac、Linux、x64、x86、ARMなどの異なるOSとプロセッサーをサポートします。
iText
.NET バージョン:
- .NET Core (2.x, 3.x)
- .NET Framework (4.6.1+)
- .NET 5+
アプリ環境: iTextは、Javaと.NET (C#)の両方をサポートしているため、Windows、Mac、Linux、Dockerを含む様々なアプリ環境をサポートします。
- OS: Windows、macOS、およびLinuxオペレーティングシステムで動作します。
主な機能比較: IronPDF vs. iText
IronPDFの主な機能一覧、およびiTextの両方がPDFファイルを操作するための多くの機能とツールを提供しています。 次のセクションでは、これらの機能のいくつかを詳しく見ていき、異なるPDF関連のタスクを実行する際に、2つのライブラリがどのように比較されるかを確認します。
IronPDF
HTMLからPDFへの変換: HTML、CSS、JavaScript、画像をサポートします。
PDFファイルの操作: ドキュメントの分割とマージ、フォーマットを変更、既存のPDF文書の編集。
セキュリティ:PDFの暗号化と復号化。
編集: 注釈、ブックマーク、およびアウトラインを追加。
テンプレート: ヘッダー、フッター、ページ番号を適用。
透かし: PDFファイルに簡単にテキストと画像の透かしを適用; HTML/CSSを使用して完全に制御できます。
- PDFスタンプ: IronPDFを使用してPDFドキュメントに画像とテキストをスタンプ。
IronPDFが提供する膨大な機能セットについての詳細は、IronPDFの機能ページをご覧ください。
時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
PDFの作成: ゼロからPDF文書の作成をサポートします。
フォーム: PDFフォームを作成および編集。
デジタル署名: PDF文書に署名。
圧縮: PDFファイルサイズを最適化。
コンテンツ抽出: PDFからテキストと画像を抽出。
オープンソース: AGPLライセンスで利用可能。
- カスタマイズ性: 高度なユースケースのための高いカスタマイズ性。
IronPDFとiTextのPDF機能の比較
HTMLからPDFへの変換
HTMLコンテンツをIronPDFでPDFに変換するは、多くの異なるオフィスやワークスペースで実行されています。 一方で、時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。は低レベルで長い方法を取り、文書作成中にPDFの暗号化を行い、所有者とユーザーのパスワードを指定し、AES-128などの標準で権限を決定します。
IronPDF
using IronPdf;
// Configure security settings
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS and JavaScript.
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");using IronPdf;
// Configure security settings
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external HTML assets: images, CSS and JavaScript.
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using iText.Html2pdf;
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
}
}using iText.Html2pdf;
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
}
}HTMLからPDFへの変換の際、IronPDFはこの作業に便利で使いやすいツールを提供します。 ChromePdfRendererを使用してHTMLコンテンツをPDFに変換し、IronPDFはユーザーにピクセルパーフェクトなPDFドキュメントを提供するのに優れています。 ユーザーはHTML文字列から直接PDFを作成したり、外部の資産をオプションのベースパスと共に含めることができます。これは高度な例で示されています。 一方、時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。はHtmlConverterクラスを使用してHTMLファイルからPDFドキュメントを作成する基本的な方法をとっています。
PDFファイルの暗号化
IronPDFでのPDFファイルの暗号化および復号化は、多くの職場で不可欠です。 以下では、iTextとIronPDFがPDFの暗号化をどのように処理するかを見ていきます。
IronPDF
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from HTML
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;
public class EncryptPdf
{
public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
public static readonly String SRC = "../../../resources/pdfs/hello.pdf";
public static readonly String OWNER_PASSWORD = "World";
public static readonly String USER_PASSWORD = "Hello";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new EncryptPdf().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
new WriterProperties().SetStandardEncryption(
Encoding.UTF8.GetBytes(USER_PASSWORD),
Encoding.UTF8.GetBytes(OWNER_PASSWORD),
EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA
)));
document.Close();
}
}using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;
public class EncryptPdf
{
public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
public static readonly String SRC = "../../../resources/pdfs/hello.pdf";
public static readonly String OWNER_PASSWORD = "World";
public static readonly String USER_PASSWORD = "Hello";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new EncryptPdf().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
new WriterProperties().SetStandardEncryption(
Encoding.UTF8.GetBytes(USER_PASSWORD),
Encoding.UTF8.GetBytes(OWNER_PASSWORD),
EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA
)));
document.Close();
}
}IronPDFは、ユーザーにPDFファイルを暗号化する簡単な方法を提供し、メタデータを編集したり、コピーやペーストなどのユーザーアクションを制限するなどのセキュリティ設定の調整など、ユーザーに多くのコントロールを与えます。 一方、時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。は、PDFの暗号化を文書の作成中に適用し、所有者およびユーザーのパスワードを指定し、AES-128などの暗号化標準を使用して印刷権などの権限を決定し、低レベルで長い方法を採用しています。
PDFコンテンツの編集
時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があることがあります。以下のコード例では、IronPDFを使用してテキストを編集する方法をiTextと比較して示します。
IronPDF
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;
string src = "input.pdf";
string dest = "output_redacted.pdf";
using (PdfReader reader = new PdfReader(src))
using (PdfWriter writer = new PdfWriter(dest))
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Iterate through each page
for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
{
PdfPage page = pdfDoc.GetPage(pageNum);
PdfCanvas canvas = new PdfCanvas(page);
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Define rectangles to redact
// Overlay black rectangles to simulate redaction
foreach (Rectangle rect in rectanglesToRedact)
{
canvas.SetFillColor(ColorConstants.BLACK)
.Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
.Fill();
}
}
}using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;
string src = "input.pdf";
string dest = "output_redacted.pdf";
using (PdfReader reader = new PdfReader(src))
using (PdfWriter writer = new PdfWriter(dest))
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Iterate through each page
for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
{
PdfPage page = pdfDoc.GetPage(pageNum);
PdfCanvas canvas = new PdfCanvas(page);
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Define rectangles to redact
// Overlay black rectangles to simulate redaction
foreach (Rectangle rect in rectanglesToRedact)
{
canvas.SetFillColor(ColorConstants.BLACK)
.Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
.Fill();
}
}
}IronPDFの編集ツールはコンパクトで使いやすく、編集プロセスを合理化するために数行のコードを必要とするだけです。 これにより、PDF編集タスクの効率が向上し、ユーザーに機密データやプライベートデータを安全に保つための簡単な方法を提供します。 一方で、時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。は、IronPDFと同じ意味での組み込みの編集ツールを提供していません。 しかし、上記の方法を使用してユーザーが編集したいコンテンツに矩形を描画することで、依然として機密データをカバーすることができます。 これは潜在的な問題を引き起こす可能性があります。これらの矩形は実際にはテキストを削除したり適切に編集したりするわけではないため、他の人がコピーして貼り付けることで編集されたデータを取得できる可能性があります。
PDF文書への署名
IronPDFでPDF文書にデジタル署名をすることは、特に自動化プロセスとすることで、時間を節約できます。 以下は、IronPDFが文書のデジタル署名を実行する方法がiTextとどのように異なるかを比較したコードの断片です。
IronPDF
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;
class Program
{
static void Main(string[] args)
{
string src = "input.pdf";
string dest = "output_signed.pdf";
string pfxFile = "your_certificate.pfx";
string pfxPassword = "your_password";
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(src))
using (PdfWriter writer = new PdfWriter(dest))
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Create the signer
PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());
// Configure signature appearance
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetReason("Digital Signature");
appearance.SetLocation("Your Location");
appearance.SetContact("Your Contact");
// Create signature
IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
Console.WriteLine($"PDF digitally signed successfully: {dest}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;
class Program
{
static void Main(string[] args)
{
string src = "input.pdf";
string dest = "output_signed.pdf";
string pfxFile = "your_certificate.pfx";
string pfxPassword = "your_password";
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(src))
using (PdfWriter writer = new PdfWriter(dest))
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Create the signer
PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());
// Configure signature appearance
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetReason("Digital Signature");
appearance.SetLocation("Your Location");
appearance.SetContact("Your Contact");
// Create signature
IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
Console.WriteLine($"PDF digitally signed successfully: {dest}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}PDFファイルにデジタル署名を適用する際、IronPDFはこのプロセスを完了するための簡潔でありながら強力なツールを提供します。 その簡便さにより、開発者の署名ニーズのためにこれを実装するあらゆる開発者にとって迅速にプロセスを実行することができます。 一方、時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。はPDFファイルにデジタル署名を適用するために長くて複雑なプロセスを必要とします。 異なるインターフェースオプションやキーを使用してユーザーにより多くのコントロールを提供しますが、このツールがこのタスクを実行する方法の複雑さがその使用を妨げる可能性があります。
PDF文書への透かしの適用
IronPDFでPDFに透かしを追加し、カスタマイズする能力は、機密性、著作権保護、ブランディング、または機密情報を含むあらゆるタスクで大いに役立ちます。 以下は、IronPDFとiTextがPDFファイルに透かしを適用する方法の比較です。
IronPDF
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public class TransparentWatermark
{
public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
public static readonly String SRC = "../../../resources/pdfs/hero.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new TransparentWatermark().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark1.Close();
PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
over.SetFillColor(ColorConstants.BLACK);
paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark2.Close();
paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
over.SaveState();
PdfExtGState gs1 = new PdfExtGState();
gs1.SetFillOpacity(0.5f);
over.SetExtGState(gs1);
Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark3.Close();
over.RestoreState();
pdfDoc.Close();
}
}using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public class TransparentWatermark
{
public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
public static readonly String SRC = "../../../resources/pdfs/hero.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new TransparentWatermark().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark1.Close();
PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
over.SetFillColor(ColorConstants.BLACK);
paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark2.Close();
paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
over.SaveState();
PdfExtGState gs1 = new PdfExtGState();
gs1.SetFillOpacity(0.5f);
over.SetExtGState(gs1);
Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark3.Close();
over.RestoreState();
pdfDoc.Close();
}
}IronPDFの簡単で直感的なAPIは、ユーザーがカスタム透かしを迅速にPDFファイルに適用することを可能にし、プロセス全体で完全なコントロールを提供します。 HTML/CSSを使用することで、カスタマイズコントロールを失うことなくプロセスをさらに簡素化します。 iTextのアプローチは、PDFに透かしを追加するために、手作業が必要であり、そのプロセスを遅延させる可能性があります。
PDFに画像とテキストをスタンプする
PDFにテキストや画像をスタンプするとき、PDFファイルに透かしを適用する必要があるようなことがあります。 IronPDFとiTextがPDF文書にコンテンツをスタンプする方法を比較します。
IronPDF
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));
Document doc = new Document(pdfDoc);
// Add stamp (text) to each page
int numPages = pdfDoc.GetNumberOfPages();
for (int i = 1; i <= numPages; i++)
{
doc.ShowTextAligned(new Paragraph(stampText),
36, 36, i, iText.Layout.Properties.TextAlignment.LEFT,
iText.Layout.Properties.VerticalAlignment.TOP, 0);
}
doc.Close();
}using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));
Document doc = new Document(pdfDoc);
// Add stamp (text) to each page
int numPages = pdfDoc.GetNumberOfPages();
for (int i = 1; i <= numPages; i++)
{
doc.ShowTextAligned(new Paragraph(stampText),
36, 36, i, iText.Layout.Properties.TextAlignment.LEFT,
iText.Layout.Properties.VerticalAlignment.TOP, 0);
}
doc.Close();
}IronPDFは、可変でカスタマイズ可能な方法でPDFにテキストや画像を追加することを可能にし、全体的なコントロールを提供します。 そのAPIはHTML/CSSに慣れた開発者にとって特に理解しやすく、扱いやすいです。 時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。は、その画像とテキストスタンピングツールを使用して、ユーザーのPDFファイルに表示されるコンテンツに対してより多くのコントロールを提供しますが、プロセスがより手動になりがちです。
DOCXからPDFに変換
時には、PDFをあるフォーマットから別のフォーマットに変換する必要があります。 この場合、私たちはIronPDFでのDOCXからPDFへの変換とこのプロセスをIronPDFとiTextがどのように処理するかを見ます。
IronPDF
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。
iText自体では、DOCXからPDFへの変換を取り扱うことができません; 代わりに、外部のライブラリ(例: DocXやAspose.Words)に依存しています。
IronPDFは開発者に対し、外部ライブラリなしでDOCXファイルをPDFフォーマットに変換するための簡潔で直接的なツールを提供しています。 時には機密情報やプライベート情報を扱う際、PDFファイルの一部をIronPDFでテキストを編集する必要があります。以下のコード例でIronPDFを使用してテキストを編集する方法をiTextと比較して示します。はこのタスクを実行するために外部ライブラリに依存しています。
コード例の比較の要約
より詳しい例については、IronPDFの例: HTMLからPDFの作成をご覧ください。
Bootstrap とモダン CSS フレームワークのサポート
現実の開発において、各ライブラリが最新のCSSフレームワークをどの程度うまく対応できるかがしばしば重要な考慮事項となります。 Bootstrap, Tailwind CSS, Foundationなどがほとんどの現代のWebアプリケーションの基盤を形成しているため、フレームワークの互換性は開発ワークフローと出力の品質に大きな影響を与える可能性があります。
IronPDF: モダンなフレームワークの完全サポート
IronPDFのChromeレンダリングエンジンは、すべての現代CSSフレームワークに対して完全で生産に準備されたサポートを提供します:
- Bootstrap 5:すべてのレイアウトでネイティブ フレックスボックスと CSS グリッドをサポート
- Tailwind CSS:完全なユーティリティファーストフレームワークのサポート -最新の CSS3:変換、アニメーション、カスタムプロパティ、高度なセレクタ -フレームワーク検証: BootstrapホームページとBootstrapテンプレートを正常にレンダリングします
コード例: Bootstrap進捗インディケータ
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrap ProgressBars = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container my-5'>
<h2 class='mb-4'>Project Progress Dashboard</h2>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Backend Development</span>
<span class='text-success fw-bold'>85%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar progress-bar-striped bg-success' role='progressbar'
style='width: 85%' aria-valuenow='85' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Frontend UI</span>
<span class='text-warning fw-bold'>60%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar progress-bar-animated bg-warning' role='progressbar'
style='width: 60%' aria-valuenow='60' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Testing & QA</span>
<span class='text-info fw-bold'>40%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar bg-info' role='progressbar'
style='width: 40%' aria-valuenow='40' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapProgressBars);
pdf.SaveAs("project-progress.pdf");using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrap ProgressBars = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container my-5'>
<h2 class='mb-4'>Project Progress Dashboard</h2>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Backend Development</span>
<span class='text-success fw-bold'>85%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar progress-bar-striped bg-success' role='progressbar'
style='width: 85%' aria-valuenow='85' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Frontend UI</span>
<span class='text-warning fw-bold'>60%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar progress-bar-animated bg-warning' role='progressbar'
style='width: 60%' aria-valuenow='60' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
<div class='mb-4'>
<div class='d-flex justify-content-between mb-1'>
<span>Testing & QA</span>
<span class='text-info fw-bold'>40%</span>
</div>
<div class='progress' style='height: 25px;'>
<div class='progress-bar bg-info' role='progressbar'
style='width: 40%' aria-valuenow='40' aria-valuemin='0' aria-valuemax='100'>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapProgressBars);
pdf.SaveAs("project-progress.pdf");iText7: フレームワークサポートの限定
公式のiTextドキュメントによると、開発者は次のことを推奨されています:
- JavaScript 実行なし:動的な Bootstrap コンポーネントを処理できません -フレックスボックスのサポートが限定的: Bootstrap 4+レイアウトは正しくレンダリングされないことが多い (v7.1.15では部分的にサポートされています)
- CSS グリッドはサポートされていません:最新のグリッドベースのレイアウトは機能しません -手動の前処理が必要:複雑なレイアウトには、Selenium や Puppeteer などの外部ツールが必要です。
公式のiText doc"taonにによると、開発者には次のことを推奨されています:
- フレックスボックスを含む複雑なCSSレイアウトを避ける
- モダンなグリッドシステムの代わりにテーブルベースのレイアウトを使用する
- Bootstrapコンポーネントを基本的なHTMLに簡素化する
- フレームワークの互換性が限られているため、十分にテストする
実際の影響:アプリケーションのユーザー インターフェイスに Bootstrap を使用しており、Web デザインに一致する PDF エクスポートが必要な場合、iText7 では PDF 生成のために HTML/CSS の大幅な再設計または外部のブラウザー自動化ツールとの統合が必要となり、複雑さと開発時間が大幅に増加します。
包括的なCSSフレームワークの互換性情報については、Bootstrap & Flexbox CSS ガイドをご覧ください。
価格とライセンス: IronPDF vs. iText Library
IronPDFの価格とライセンス
IronPDFのライセンスオプションは、ライセンスを購入するための様々なレベルと追加機能を提供しています。 開発者は、Iron Softwareの全製品へのアクセスを2つの値段で得るため、[Iron Suite](Iron Suite)を購入することもできます。 ライセンスを購入する準備ができていない場合、IronPDFは30日間の無料試用版を提供しています。
永続ライセンス: チームのサイズ、プロジェクトのニーズ、拠点数に応じた幅広い永続ライセンスを提供。 各ライセンスタイプには電子メールサポートが付属しています。
Lite License: このライセンスは1人の開発者、1か所、1つのプロジェクトをサポートします。
Plus License: 3人の開発者、3か所、3つのプロジェクトをサポートし、費用は$1,199です。 Plusライセンスは、チャット、電話、メールサポートが提供されています。
Professional License: 10人の開発者、10か所、10のプロジェクトをサポートするためのより大きなチームに適しています。費用は$2,399です。 以前の階層と同様の連絡サポートチャンネルを提供し、画面共有サポートも提供しています。
ロイヤリティフリーの再配布: IronPDFのライセンスは、ロイヤリティフリーの再配布を追加$2,399で提供します。
途切れない製品サポート: 継続的な製品更新、セキュリティ機能のアップグレード、およびエンジニアリングチームからのサポートにアクセスできます。また、$1,199/年、または$2,399の5年間のカバレッジの一括購入が可能です。
- Iron Suite: $1,498 で、IronPDF、IronOCR、IronWord、IronXL、IronBarcode、IronQR、IronZIP、IronPrint、IronWebScraper を含むすべての Iron Software 製品にアクセスできます。
iTextライセンス
AGPLライセンス: iText Coreライブラリはオープンソースであり、無料でユーザーが利用できます。 このライセンスモデルの下でiTextを使用するには、その条件に従う必要があり、iTextそれ自体に対するあらゆる変更もAGPLライセンスモデルの下でリリースされなければなりません。
- 商用ライセンス: iTextは、AGPLの条件に準拠したプロジェクトでない開発者に商用のライセンスモデルを提供しており、価格は見積もりが必要です。
ドキュメントとサポート: IronPDF vs. iText
IronPDF
包括的なドキュメント: すべての機能を網羅したユーザーフレンドリーなドキュメントを提供
24/5 サポート: アクティブなエンジニアサポートが利用可能です。
ビデオチュートリアル: YouTubeでステップバイステップのビデオガイドが利用可能です。
コミュニティフォーラム: 追加のサポートのための参加型コミュニティ。
- 定期更新: 最新の機能とセキュリティパッチを含む毎月の製品更新。
iText
ドキュメント: iTextソフトウェアの機能を網羅する詳細なドキュメント。
例とチュートリアル: 様々な機能に関するチュートリアルとコード例。
GitHub: 開発者はiText GitHubリポジトリに問題やバグを提出し、iTextグループと連絡を取ることができます。
- 更新: iTextは定期的な更新と改善を提供しています。
より詳しい内容については、IronPDFドキュメントとIron Software YouTubeチャンネルをご覧ください。
結論
.NETでのPDFマニピュレーションツールの領域では、IronPDFとiTextの両方がさまざまな開発ニーズに応じた強力な機能を提供しています。 IronPDFは、.NET Core、Framework、Standardなどのプラットフォーム間でのシンプルな統合と、HTMLからPDFへの変換や高度なセキュリティオプションなどの包括的な機能を備えている点で際立ちます。 一方でiTextは、Javaの伝統で知られ、オープンソースと商用ライセンスの両方で強力なPDF生成および操作ツールを提供し、多用途性とカスタマイズ性を強調します。
これらのツールの選択は最終的にプロジェクトの要件、ライセンスの好み、および必要な技術サポートレベルにかかっています。 IronPDFのシンプルさと柔軟性を選ぶにしても、iTextというオープンソースのPDFライブラリの広範な機能セットを選ぶにしても、開発者はアプリケーションでPDFワークフローを効果的に合理化するための十分なリソースを持っています。
30 日間無料トライアルを試して、利用可能な機能をチェックできます。
BRACKET-i-OPENは、各所有者の登録商標です。 このサイトは、iTextと提携しておらず、承認されてもおらず、後援されてもいません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
よくある質問
C# で HTML を PDF に変換するにはどうすればいいですか?
IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。
IronPDF と iText の主な違いは何ですか?
IronPDF は、使いやすさ、包括的なドキュメント、強力な技術サポートの点で称賛されており、開発者にとってユーザーフレンドリーなオプションです。一方、iText は堅牢ですが、しばしばより多くの手作業を必要とし、オープンソース (AGPL) および商業的ライセンスとして利用可能です。
PDF ライブラリにはどのようなライセンスオプションがありますか?
IronPDF はさまざまな無期限ライセンスとロイヤリティフリーのオプションを提供し、iText は AGPL に従わないプロジェクトに対して商業オプション付きの無償AGPLライセンスを提供しています。
どの PDF ライブラリが開発者へのサポートをより良く提供していますか?
IronPDF は包括的なドキュメント、24/5のエンジニアサポート、活発なコミュニティフォーラムを提供しており、開発者が最新のリソースや支援を受けられることを保証しています。
IronPDF は異なる .NET 環境と互換性がありますか?
はい、IronPDFは.NET Core、.NET Standard、.NET Frameworkと互換性があり、Windows、Linux、Mac、Docker、Azure、AWSなどの環境で動作します。
IronPDF は PDF 暗号化をどのように処理しますか?
IronPDF は、簡単にメタデータを編集したりセキュリティ設定を調整したりできる、使いやすい API を提供しており、ドキュメントのセキュリティとコンプライアンスを確保します。
IronPDF は DOCX から PDF への変換を行えますか?
はい、IronPDFはDOCXからPDFへの変換に優れており、外部ライブラリを必要とせず直接的で効率的なプロセスを提供し、アプリケーション内の文書変換タスクを簡素化します。
HTML から PDF への変換で IronPDF が際立つ特徴は何ですか?
IronPDF は ChromePdfRenderer を使用して HTML から PDF への変換を行い、HTML、CSS、JavaScript の容易な統合を可能にし、Web コンテンツを PDF に正確にレンダリングします。
クロスプラットフォーム互換性の点で IronPDF と iText はどのように比較されますか?
両方のライブラリは複数のオペレーティングシステムおよび環境をサポートしていますが、IronPDF は HTML から PDF への変換や PDF 暗号化などのタスクでよりスムーズな体験を提供します。
IronPDF の提供する主要な機能は何ですか?
IronPDF は、HTML から PDF への変換、PDF ファイル操作、暗号化と復号化、編集機能、透かし、水印スタンピング、デジタル署名といった機能を提供しています。






