ドキュメント管理
ドキュメント管理
Document は Aspose.PDF FOSS for .NET のルートオブジェクトです。 それは
PDF ファイル全体を表し、ページ、メタデータ、フォームフィールド、そして他のすべての PDF 構造へのアクセスを提供します。
既存のファイルは Document.Open で開き、Document コンストラクタで新しいものを作成します。
ドキュメントの開封と作成
// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));
// Open from a file path
using var doc2 = new Document("input.pdf");
// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");ページの操作
PageCollection はドキュメントのページを管理します。1 ベースのインデックスでページにアクセスし、
新しいページを追加したり、既存のページを削除したりできます。
using var doc = Document.Open(pdfBytes);
// Access first page
var page = doc.Pages[1];
// Add a blank page
var newPage = doc.Pages.Add();
// Get page count
int count = doc.Pages.Count;ページジオメトリ
各ページは複数のバウンディングボックスを定義します。Page のセッターメソッドを使用してそれらを調整してください。
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);ドキュメントの保存
ファイル パス、ストリーム、またはバイト配列に保存します。
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);ファイル添付
FileSpecification は PDF の埋め込みファイル添付を表します。
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);画像スタンプ
ImageStamp は、指定された位置にページ上のラスタ画像をオーバーレイします。
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");演算子コレクション
OperatorCollection は各ページで生のコンテンツストリーム演算子を保持します。低レベルのコンテンツ検査や操作に使用してください。
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}ヒントとベストプラクティス
Documentをusingステートメントでラップして、ファイルハンドルを速やかに解放します。- ファイルロックの問題を回避するため、インメモリ ワークフローでは
Document.Open(byte[])を使用します。 - 正しい座標空間を確保するため、コンテンツを追加する前にページボックス(MediaBox、CropBox)を変更します。
- すべての変更後に
Saveを一度だけ呼び出します — 繰り返し保存は遅くなりますが安全です。 - すべてのページにわたるアノテーションをバッチ処理するには
PageCollection.Accept(AnnotationSelector)を使用します。
一般的な問題
| Issue | Cause | Fix |
|---|---|---|
Document.Open が有効な PDF で例外をスロー | ファイルがパスワードで暗号化されている | コンストラクタで password パラメータを指定する |
| 構築後のページ数が 0 | 新しい Document() は空の状態で開始する | doc.Pages.Add() を呼び出して空白ページを追加する |
| 保存されたファイルが予想より大きい | 画像またはフォントが複数回埋め込まれている | 最適化を使用する(Conversion and Optimization guide 参照) |
Pages[0] がインデックスエラーをスロー | ページは 1 ベースで、0 ベースではない | 最初のページには Pages[1] を使用する |
よくある質問
PDF ドキュメントを 2 つ結合するにはどうすればよいですか?
Facades API の PdfFileEditor.Concatenate を使用するか、PageCollection を使用して手動でページを別のドキュメントにコピーします。
URL またはストリームから PDF を開くことはできますか?
はい。URL のコンテンツをまず byte[] に読み込み、次にそれをDocument.Open(byte[])。
ページを削除するにはどうすればよいですか?
doc.Pages.Delete(pageNumber) を呼び出すとき、pageNumber は 1 ベースです。
Document はスレッドセーフですか?
いいえ。各スレッドはそれぞれの Document インスタンスで動作すべきです。
API リファレンス概要
| Class / Method | Description |
|---|---|
Document | ルートPDFオブジェクト; ページ、メタデータ、フォームフィールドを保持 |
Document.Open | バイト配列からPDFを開くための静的ファクトリ |
Document.Save | ドキュメントをファイルまたはストリームにシリアライズ |
Page | コンテンツ、注釈、ジオメトリを含む単一のPDFページ |
Page.SetMediaBox | ページのメディアボックスを定義 |
Page.SetCropBox | 可視クロップ領域を定義 |
Page.SetRotation | ページを0、90、180、または270度回転 |
PageCollection | ドキュメント内のページの順序付けられたコレクション |
PageCollection.Add | 空白ページを追加 |
OperatorCollection | ページの生コンテンツストリーム演算子 |
FileSpecification | 埋め込みファイル添付記述子 |
ImageStamp | ページ用の画像オーバーレイスタンプ |
XFormCollection | ドキュメント内の再利用可能なフォームXObject |