0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# でメモリ上の PDF を読み込み・編集する(バイト配列操作)

Posted at

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() でテキストを配置
  • PdfFontPdfBrushesPointF によってフォント・色・位置を指定

編集済み PDF をバイト配列に保存する

編集後の PDF は再びバイト配列に変換して利用できます。これにより、API のレスポンスやデータベース保存に適用可能です。

byte[] editedBytes;
using (var ms = new MemoryStream())
{
    doc.SaveToStream(ms);
    editedBytes = ms.ToArray();
}

doc.Close();
  • SaveToStream() で PDF をメモリストリームに保存
  • ToArray() により MemoryStreambyte[] に変換
  • doc.Close() でリソースを解放

編集後のPDFファイル:

C#を使用してバイト配列でPDF文書を編集する

活用シナリオ

このような「バイト配列ベース」の PDF 処理は、以下のようなシーンで特に有効です:

  • データベース保存:PDF をバイナリ形式で格納・読み込み
  • Web API:クライアントから PDF を受け取り、処理後に byte[] として返却
  • クラウド/サーバーレス環境:一時ファイルを使わず、メモリ上だけで処理

まとめ

本記事では C# で PDF とバイト配列を相互に操作する方法を解説しました:

  1. byte[] から PDF をロード
  2. PDF ページに文字を追加
  3. 編集済み PDF を byte[] として保存

ディスク操作を行わず、効率的かつ柔軟に PDF を扱うことができます。特にデータベースや Web API、クラウド環境での開発に最適です。

より高度な PDF 編集機能(画像挿入、透かし、表の描画、暗号化/復号など)については、Spire.PDF 公式ドキュメント をご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?