C# の開発では、PDF ファイルとバイト配列(byte[]
)を相互に扱うケースがよくあります。例えば:
- データベースに保存された PDF がバイナリ形式で格納されており、アプリケーションで読み込み・編集したい場合
- Web API で PDF をアップロードまたは返却する際に、バイトストリームでやり取りする場合
- サーバー側で PDF を処理し、その結果を
byte[]
として返却する場合
本記事では Free Spire.PDF for .NET を利用して、C# で PDF をバイト配列から読み込み、メモリ上で編集し、再びバイト配列として保存する方法を紹介します。ディスクへの一時保存は不要です。
本文の内容
- バイト配列から PDF を読み込む方法
- PDF に文字を追加する方法
- 編集済み PDF を再びバイト配列として保存する方法
- データベース・API・クラウド環境での活用シナリオ
必要なライブラリは Free Spire.PDF for .NET です。NuGet からインストールできます:
Install-Package FreeSpire.PDF
バイト配列から PDF を読み込む
PDF はデータベース、API リクエスト、またはローカルファイルから取得できます。以下のコードは File.ReadAllBytes()
で PDF ファイルを byte[]
に読み込み、PdfDocument.LoadFromBytes()
でメモリ上にロードする例です。
using Spire.Pdf;
using System.IO;
byte[] inputBytes = File.ReadAllBytes("Input.pdf");
PdfDocument doc = new PdfDocument();
doc.LoadFromBytes(inputBytes);
-
inputBytes
は PDF の生データを保持 -
LoadFromBytes()
でファイルパスを使わずに直接ロード可能
PDF に文字を追加する
ロードした PDF に対して、任意のページに文字や図形を描画できます。次の例では、1 ページ目の下部に青色の文字列を描画します。
using Spire.Pdf.Graphics;
using System.Drawing;
// 1ページ目を取得
PdfPageBase page = doc.Pages[0];
// テキストを描画
page.Canvas.DrawString(
"Edited in memory",
new PdfFont(PdfFontFamily.Helvetica, 12f),
PdfBrushes.DarkBlue,
new PointF(100, page.Size.Height - 100)
);
-
PdfPageBase.Canvas
で描画操作を実行 -
DrawString()
でテキストを配置 -
PdfFont
、PdfBrushes
、PointF
によってフォント・色・位置を指定
編集済み PDF をバイト配列に保存する
編集後の PDF は再びバイト配列に変換して利用できます。これにより、API のレスポンスやデータベース保存に適用可能です。
byte[] editedBytes;
using (var ms = new MemoryStream())
{
doc.SaveToStream(ms);
editedBytes = ms.ToArray();
}
doc.Close();
-
SaveToStream()
で PDF をメモリストリームに保存 -
ToArray()
によりMemoryStream
をbyte[]
に変換 -
doc.Close()
でリソースを解放
編集後のPDFファイル:
活用シナリオ
このような「バイト配列ベース」の PDF 処理は、以下のようなシーンで特に有効です:
- データベース保存:PDF をバイナリ形式で格納・読み込み
-
Web API:クライアントから PDF を受け取り、処理後に
byte[]
として返却 - クラウド/サーバーレス環境:一時ファイルを使わず、メモリ上だけで処理
まとめ
本記事では C# で PDF とバイト配列を相互に操作する方法を解説しました:
-
byte[]
から PDF をロード - PDF ページに文字を追加
- 編集済み PDF を
byte[]
として保存
ディスク操作を行わず、効率的かつ柔軟に PDF を扱うことができます。特にデータベースや Web API、クラウド環境での開発に最適です。
より高度な PDF 編集機能(画像挿入、透かし、表の描画、暗号化/復号など)については、Spire.PDF 公式ドキュメント をご覧ください。