製品比較

iTextSharpを使用してC#でPDFにページ番号を追加する方法

チペゴ
チペゴ・カリンダ
2024年4月3日
共有:

イントロダクション

「Portable Document Format」、またはPDFは、Adobeによって作成されたファイル形式です。 PDFは、文書や写真の形式を整える必要がある論文を提示するときに便利です。 現在の世界では、PDFファイルは必需品となっており、あらゆる企業分野で文書の作成や請求書発行に利用されています。 PDFライブラリが多数市場に出ているおかげで、PDFの作成はほぼ直感的になりました。プロジェクトで使用する前に、それぞれの利点と特徴を比較し、適切なPDFライブラリを選ぶことが重要です。

この記事では、iTextSharp C#を使用してPDFにページ番号を追加する方法を紹介します。 また、iTextSharpIronPDFを比較します。

iTextSharp C# を使用して PDF にページ番号を追加する方法

  1. 任意のIDEを使用して、新しいC#プロジェクトを作成します。

  2. 新しいPDFオブジェクトを作成します。

  3. HTMLフッターにページ番号を追加します。

  4. HTML素材からPDFを作成します。

  5. PDFファイルをコンピューターに保存します。

IronPDFとは

IronPDFは、開発者が簡単にPDFを生成、表示、および編集できる堅牢なPDF .NETフレームワークです。 IronPDFは、内部でクロムエンジンを使用して稼働する高度なツールです。 HTML5、JavaScript、CSS、および画像ファイルをPDFに変換し、カスタムヘッダーおよびフッターを追加し、ブラウザで表示される通りにPDFを正確に生成できます。 IronPDFは、多くのオンラインおよびネットフォーマット(HTML、ASPX、Razor View、MVCなど)をサポートしています。

IronPDFの機能

  • .NET C#コードを利用して、PDFファイルを作成、読み取り、および簡単に編集する。
  • ユーザーエージェント、プロキシ、クッキー、HTTPヘッダー、およびフォーム変数を管理し、HTMLログインフォームを使用してログインを有効にするために、ウェブサイトURLリンクからPDFを作成するプロセス。
  • 既存のPDFファイルから画像を削除するプロセス。
  • PDFの要素の含有:テーブル、テキスト、写真、ブックマーク、ウォーターマーク、ヘッダー、フッター、その他。
  • 多数のPDFドキュメントのページを簡単に分離および結合する能力。

    IronPDFのドキュメントについて詳しく知りたい場合は、こちらを参照してください。

IronPDFのインストール

Visual Studio ツール内で、NuGet パッケージ マネージャーを選択し、ツールの下にある Visual コマンドライン インターフェイスを見つけることができます。 以下のコマンドをパッケージ管理ターミナルタブに入力してください。

Install-Package IronPdf

または、パッケージマネージャーの方法を使用することもできます。 パッケージを直接ソリューションにインストールするには、Visual StudioのNuGetパッケージマネージャーオプションを使用できます。 NuGetサイト上でパッケージを検索するための検索ボックスが利用可能です。以下のスクリーンショットに示されているように、パッケージマネージャで「IronPDF」を検索するだけで済みます。

iTextSharpを使用してC#でPDFにページ番号を追加する方法: 図1 - パッケージマネージャからIronPDFをインストールする

上記の画像には関連する検索結果の一覧が表示されています。 パッケージをシステムにインストールするために、必要な選択を行ってください。

パッケージのダウンロードとインストールが完了したので、現在のプロジェクトで利用できます。

iTextSharpとは何ですか

iTextSharpは、C#でPDFドキュメントを作成および修正するための柔軟なライブラリです。 それは暗号化、PDF結合、テキストおよび画像の抽出など、いくつかの機能を提供します。 iTextSharpは、PDFにページ番号を追加するなど、さまざまなタスクに効率的に対応できるツールです。

iTextSharpの機能

  • PDFドキュメントを生成するためのAPIは、iTextライブラリを通じて利用可能です。
  • HTMLおよびXML文字列は、iTextプログラムを使用してPDFファイルに変換することができます。
  • iTextライブラリを使用して、PDFドキュメントにブックマーク、ページ番号、およびマーカーを追加できます。
  • iTextライブラリを使用して、PDFドキュメントを複数のPDFに分割したり、複数のPDFドキュメントを1つのPDFに結合することもできます。
  • iTextを使用してPDFフォームを変更できます。

iTextSharpをインストールする

NuGetパッケージマネージャーを使用してiTextを探します。 iText7およびiText.pdfhtmlは、iTextの機能が多くのパッケージに分かれているため、インストールが必要です。

ビジュアルコマンドラインインターフェースを選択する場合、以下のパッケージをインストールする必要があります:

Install-Package iTextSharp

最新バージョンであるiText 7を、私たちのソリューションで使用しています。

IronPDFを使用してページ番号を追加

PDFファイルにページ番号を追加することは、IronPDFの包括的なライブラリを使用することで簡単になります。 例として、以下のコードをご覧ください。

using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    // Add footer
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    // Add footer
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
Imports IronPdf
Shared Sub main(ByVal args() As String)
	Dim renderer = New IronPdf.HtmlToPdf()
	private String header = "<h1>Hello Ironpdf!<h1>"
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)
	Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}
	' Add footer
	pdf.AddHtmlFooters(htmlFooter)
	pdf.SaveAs("output.pdf")
End Sub
$vbLabelText   $csharpLabel

まず、PDFに変換する必要があるHTMLテキストを定義します。 このHTMLコンテンツは、単一のHTML段落または全体のHTMLページで構成される場合があります。 次に、HTML を PDF に変換する機能であるRenderHtmlAsPdfを提供するHTMLToPdfクラスのインスタンスを作成します。

HTML コンテンツは RenderHtmlAsPdf 関数の引数として渡されます。 PDFに変換する必要があるHTML素材を指定します。 ページ番号は、プレースホルダーとして、またはこのHTMLテキストのフッター部分にある{page} of {total-pages}として表されます。

作成されたPDFドキュメントは、このメソッドによってPdfDocumentオブジェクトとして返されます。 SaveAs メソッドを使用して、PDFドキュメントを「output.pdf」という名前のファイルに保存します。 または、OpenInDefaultPDFViewer 関数を使用して、作成したPDFドキュメントをシステムのデフォルトPDFリーダーで開くことができます。 また、上記の方法を使用して既存のPDFファイルにページ番号を追加することもできます。

iTextSharpを使用してPDFにページ番号を追加する方法(C#使用):図2 - IronPDF: ページ番号付きの出力PDF

IronPDFのコードについて詳しく知るには、こちらを参照してください。

iTextSharpを使用してページ番号を追加する

まず、iTextSharpを使用して新しいPDFドキュメントを生成しましょう。 以下は、ページ番号付きの新しいPDFドキュメントを作成する基本的な例です:

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string [] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));
            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();
            // Close the document
            doc.Close();
        }
    }
    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }
        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;
            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);
            table.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent);
        }
        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string [] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));
            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();
            // Close the document
            doc.Close();
        }
    }
    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }
        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;
            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);
            table.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent);
        }
        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Create a new PDF document
			Dim doc As New Document()
			Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("output.pdf", FileMode.Create))
			doc.Open()
			doc.Add(New Paragraph("Hello, world!"))
			' Attach page number event to PDF writer
			writer.PageEvent = New PageNumberEventHandler()
			' Close the document
			doc.Close()
		End Sub
	End Class
	Public Class PageNumberEventHandler
		Inherits PdfPageEventHelper

		Public Overrides Sub OnOpenDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnOpenDocument(writer, document)
		End Sub
		Public Overrides Sub OnEndPage(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnEndPage(writer, document)
			Dim table As New PdfPTable(1)
			table.TotalWidth = 300F
			table.HorizontalAlignment = Element.ALIGN_CENTER
			Dim cell As New PdfPCell(New Phrase($"Page {writer.PageNumber}"))
			cell.Border = 0
			table.AddCell(cell)
			table.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent)
		End Sub
		Public Overrides Sub OnCloseDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnCloseDocument(writer, document)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

まず、新しいDocumentおよびPdfWriterオブジェクトを作成して、空のPDFファイルを作成します。PDFドキュメントには、テキスト、写真、テーブル、その他の種類のコンテンツを含めることができます。 新しい段落を使用して、デモンストレーションのためのサンプルテキストを追加しましょう。 重要なステップは、PDFドキュメントにページ番号を追加することです。 iTextSharpのページイベントを使用してこれを行います。 PDF生成プロセス中に特定のイベントが発生したときに呼び出されるメソッドをオーバーライドできるようにするために、まずPdfPageEventHelperクラスを継承するクラスを構築しましょう。

このクラスでは OnEndPage 関数がオーバーライドされており、現在のページ番号を含む1つのセルを持つテーブルを追加します。 最後に、ドキュメントを閉じる前に、PageNumberEventHandler クラスのインスタンスを PdfWriter オブジェクトに接続する必要があります。 この設定により、PageNumberEventHandlerクラスのOnEndPage関数は、新しいページがPDFドキュメントに追加されるたびに呼び出され、各ページの下部にページ番号が追加されます。 既存のPDFドキュメントを使用してページ番号を追加することもできます。

iTextSharpを使用してPDFにページ番号を追加する方法: 図3 - iTextSharp: ページ番号付き出力PDF

結論

要約すると、IronPDFの専門性、使いやすさ、そして.NET環境とのシームレスな統合により、HTMLからPDFへの変換および関連機能を必要とするシナリオにおいて最適な選択肢として位置付けられていますが、iTextSharpもまだC# PDF操作ライブラリの分野で強力な競争相手です。 IronPDFを使用すると、最新の開発環境で成功するために必要な容易さ、効果的な操作、そして柔軟性を持って、HTMLコンテンツから請求書、レポート、動的に生成された文書を作成することができます。

IronPDF の $749 Lite エディションには、永久ライセンス、アップグレードオプション、および1年間のソフトウェアメンテナンスがすべて含まれています。 透かし入りの試用期間により、ユーザーは実際の環境で製品を評価することができます。 ライセンスページにアクセスしてください。 このウェブサイトにアクセスして、Iron Software についての詳細を学んでください。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C#レポート作成ツール(機能比較)
次へ >
iTextSharpを使用してC#でPDF文書を読む方法: