PDF ドキュメントのヘッダーとフッターは、タイトル、著者、日付、ページ番号などの貴重な情報を提供し、ドキュメントの使いやすさとブランドアイデンティティを向上させます。この記事では、C# で Spire.PDF for .NET を使用して既存の PDF ドキュメントにヘッダーとフッターを追加する方法を説明します。
Spire.PDF for .NET をインストールします
まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF
基本知識
Spire.PDF for .NET を使用して既存の PDF を操作する場合、座標系の原点はページの左上にあり、X 軸は右に、Y 軸は下に伸びています。ヘッダーを追加するには、上部の空白領域にコンテンツを配置し、フッターを追加するには下部の空白領域にコンテンツを配置します。
空白領域がコンテンツを収容するのに十分でない場合は、PDF ページの余白を広げることを検討できます。
C# で既存の PDF ドキュメントにヘッダーを追加する
Spire.PDF for .NET では、PdfCanvas.DrawString()、PdfCanvas.DrawImage()、PdfCanvas.DrawLine() などのメソッドを使用して、PDF ページにテキスト、画像、図形を描画できます。ページ番号や日付などの動的情報をヘッダーに追加するには、PdfPageNumberField、PdfSectionNumberField、PdfCreationDateField などの自動フィールドを使用します。
以下は Spire.PDF for .NET を使用して、テキスト、画像、日付、線で構成されるヘッダーを PDF ドキュメントに追加する手順です。
- PdfDocument オブジェクトを作成します。
- PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- テキストや図形を描画するために使用するフォント、ペン、ブラシオブジェクトを作成します。
- PdfPageBase.Canvas.DrawString() メソッドを使用して、ページの上部空白領域にテキストを描画します。
- PdfPageBase.Canvas.DrawLine() メソッドを使用して、ページの上部空白領域に線を描画します。
- PdfImage.FromFile() メソッドを使用して画像を読み込みます。
- PdfPageBase.Canvas.DrawImage() メソッドを使用して、ページの上部空白領域に画像を描画します。
- ドキュメントの作成時間を反映する PdfCreationDateField オブジェクトを作成します。
- PdfCreationDateField.Draw() メソッドを使用して、ページの上部空白領域に作成時間を描画します。
- PdfDocument.SaveToFile() メソッドを使用してドキュメントを別の PDF ファイルに保存します。
- C#
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace AddHeaderToExistingPdf
{
class Program
{
static void Main(string[] args)
{
//PdfDocumentオブジェクトを作成
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.LoadFromFile("Sample.pdf");
//ヘッダー用の画像を読み込む
PdfImage headerImage = PdfImage.FromFile("Logo.png");
//画像の幅をピクセルで取得
float width = headerImage.Width;
//ピクセルをポイントに変換
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
float pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
//ヘッダー用のテキストを指定
string headerText = "E-iceblue テック\nwww.e-iceblue.com";
//TrueTypeフォントを作成
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 12f, FontStyle.Bold), true);
//ブラシを作成
PdfBrush brush = PdfBrushes.Purple;
//ペンを作成
PdfPen pen = new PdfPen(brush, 1.0f);
//作成日時フィールドを作成
PdfCreationDateField creationDateField = new PdfCreationDateField(font, brush);
creationDateField.DateFormatString = "yyyy-MM-dd";
//静的文字列と日付フィールドを組み合わせる複合フィールドを作成
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "作成時間:{0}", creationDateField);
compositeField.Location = new Point(55, 48);
//ドキュメント内のページをループ
for (int i = 0; i < doc.Pages.Count; i++)
{
//特定のページを取得
PdfPageBase page = doc.Pages[i];
//画像を上部の空白領域に描画
page.Canvas.DrawImage(headerImage, page.ActualSize.Width - pointWidth - 55, 20);
//テキストを上部の空白領域に描画
page.Canvas.DrawString(headerText, font, brush, 55, 20);
//上部の空白領域に線を描画
page.Canvas.DrawLine(pen, new PointF(55, 70), new PointF(page.ActualSize.Width - 55, 70));
//複合フィールドを上部の空白領域に描画
compositeField.Draw(page.Canvas);
}
//ファイルに保存
doc.SaveToFile("output/PDFにヘッダーを挿入.pdf");
doc.Dispose();
}
}
}
C# で既存の PDF ドキュメントにフッターを追加する
同様に、PdfCanvas.DrawString()、PdfCanvas.DrawImage()、PdfCanvas.DrawLine() を使用してフッターを追加できます。PdfPageNumberField や PdfPageCountField などの自動フィールドは動的データの統合を助けます。
以下は Spire.PDF for .NET を使用して、画像とページ番号で構成されるフッターを PDF ドキュメントに追加する手順です。
- PdfDocument オブジェクトを作成します。
- PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- PdfImage.FromFile() メソッドを使用して画像を読み込みます。
- PdfPageBase.Canvas.DrawImage() メソッドを使用して、ページの下部空白領域に画像を描画します。
- PdfPageNumberField オブジェクトと PdfPageCountField オブジェクトを作成し、それらを PdfCompositeField オブジェクトに組み合わせて "X/Y" という文字列を返します。
- PdfCompositeField.Draw() メソッドを使用して、ページの下部空白領域にページ番号を描画します。
- PdfDocument.SaveToFile() メソッドを使用してドキュメントを別の PDF ファイルに保存します。
- C#
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace AddHeaderToExistingPdf
{
class Program
{
static void Main(string[] args)
{
//PdfDocumentオブジェクトを作成
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.LoadFromFile("Sample.pdf");
//画像を読み込む
PdfImage footerImage = PdfImage.FromFile("bg.png");
//TrueTypeフォントを作成
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 12f, FontStyle.Bold), true);
//ブラシを作成
PdfBrush brush = PdfBrushes.White;
//ページ番号フィールドを作成
PdfPageNumberField pageNumberField = new PdfPageNumberField();
//ページ数フィールドを作成
PdfPageCountField pageCountField = new PdfPageCountField();
//ページ数フィールドとページ番号フィールドを単一の文字列に結合する複合フィールドを作成
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "{0} / {1}", pageNumberField, pageCountField);
//テキストサイズを取得
SizeF fontSize = font.MeasureString(compositeField.Text);
//ページサイズを取得
SizeF pageSize = doc.Pages[0].Size;
//複合フィールドの位置を設定
compositeField.Location = new Point((int)(pageSize.Width - fontSize.Width) / 2, (int)pageSize.Height - 45);
//ドキュメント内のページをループ
for (int i = 0; i < doc.Pages.Count; i++)
{
//特定のページを取得
PdfPageBase page = doc.Pages[i];
//画像を下部の空白領域に描画
page.Canvas.DrawImage(footerImage, 55, pageSize.Height - 65, pageSize.Width - 110, 50);
//複合フィールドを下部の空白領域に描画
compositeField.Draw(page.Canvas);
}
//ファイルに保存
doc.SaveToFile("output/PDFにフッターを挿入.pdf");
doc.Dispose();
}
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。