IronPDFを使用してC#でPDFページを移動する方法

PDF ドキュメント内でのページの移動 (または 2 つのドキュメント間でのページ転送) は、レポートの整理、月刊ニュースレターの編集、または複数セクションのファイルの配信前の再構成を行うときに頻繁に必要になります。 IronPDFを使用すると、全体の操作にはわずか数行の C# コードしか必要ありません。
この記事では、ドキュメント内の 1 つのページを新しい位置に移動する、複数のページを一度に並べ替える、2 つの PDF ファイル間でページを転送する、これらのワークフローを推進する一般的な使用例を理解するという 4 つの実用的なシナリオについて説明します。 各シナリオには、動作するコード例と結果を示す出力画像が含まれています。
無料トライアルを開始して、以下の例に従ってください。
IronPDFを始めるにはどうすればいいですか?
NuGetパッケージ マネージャー コンソールまたは.NET CLI を使用して、任意 for .NETプロジェクトにIronPDF を追加します。 このパッケージは.NET Standard 2.0 を対象としており、 .NET Framework 4.6.2+、. .NET Core 、および.NET 8 と.NET 10 を含むすべての最新 for .NETバージョンで実行されます。
dotnet add package IronPdf
dotnet add package IronPdf
インストール後、C#ファイルの先頭にusing IronPdf;を追加してください。有効なライセンスキーを取得すると、商用利用が完全に可能になります。 無料試用ライセンスは評価と開発をカバーします。 API を呼び出す前にキーを 1 回設定します。
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
パッケージが参照され、ライセンスが設定されている場合、この記事のすべての例は変更なしでコンパイルおよび実行されます。 IronPDF NuGetパッケージは、必要なすべての依存関係を自動的にインストールします。 Windows、Linux、macOS では追加のネイティブ バイナリやランタイム構成は必要ありません。
PDF ドキュメント内で 1 ページを移動するにはどうすればよいですか?
IronPDFを使用して PDF ドキュメント内のページを移動するには、対象のページをコピーし、新しい位置に挿入し、元のページを削除するという 3 つの手順が必要です。 PdfDocument クラスは、この操作の各部分を処理するために InsertPdf、および RemovePage を提供します。
次のコードは、ドキュメントの最後のページを先頭に移動する方法を示しています。
using IronPdf;
// Load the PDF document from the file system
var pdf = PdfDocument.FromFile("report.pdf");
// Get the zero-based index of the last page
int lastPageIndex = pdf.PageCount - 1;
// Copy the last page into a standalone PdfDocument
var pageToCopy = pdf.CopyPage(lastPageIndex);
// Insert the copied page at position 0 (the first page slot)
pdf.InsertPdf(pageToCopy, 0);
// The original last page has shifted down by one; remove it
pdf.RemovePage(lastPageIndex + 1);
// Save the reordered document to a new file
pdf.SaveAs("report-reorganized.pdf");
using IronPdf;
// Load the PDF document from the file system
var pdf = PdfDocument.FromFile("report.pdf");
// Get the zero-based index of the last page
int lastPageIndex = pdf.PageCount - 1;
// Copy the last page into a standalone PdfDocument
var pageToCopy = pdf.CopyPage(lastPageIndex);
// Insert the copied page at position 0 (the first page slot)
pdf.InsertPdf(pageToCopy, 0);
// The original last page has shifted down by one; remove it
pdf.RemovePage(lastPageIndex + 1);
// Save the reordered document to a new file
pdf.SaveAs("report-reorganized.pdf");
Imports IronPdf
' Load the PDF document from the file system
Dim pdf = PdfDocument.FromFile("report.pdf")
' Get the zero-based index of the last page
Dim lastPageIndex As Integer = pdf.PageCount - 1
' Copy the last page into a standalone PdfDocument
Dim pageToCopy = pdf.CopyPage(lastPageIndex)
' Insert the copied page at position 0 (the first page slot)
pdf.InsertPdf(pageToCopy, 0)
' The original last page has shifted down by one; remove it
pdf.RemovePage(lastPageIndex + 1)
' Save the reordered document to a new file
pdf.SaveAs("report-reorganized.pdf")
PDF出力の再配置

このコードは PDF ファイルを読み込み、CopyPage を呼び出して、ゼロベースのインデックスで最後のページを抽出します。 IronPDF はAPI 全体でゼロベースのページ番号を使用するため、最初のページはインデックス 0 で、最後のページは PageCount - 1 になります。 コピーを位置 0 に挿入した後、元のページはインデックス シーケンス内で 1 つ下に移動します。 削除呼び出しは、lastPageIndex ではなく lastPageIndex + 1 をターゲットにすることでこれを考慮します。 範囲外のインデックスを渡すと、 ArgumentOutOfRangeExceptionがスローされるため、エッジ位置を操作する前に必ずページ数を確認してください。
個々のコピーおよび削除操作の詳細については、 "PDF ページの追加、コピー、削除"ガイドで各方法を詳しく説明しています。
ゼロベースのページインデックスは削除手順にどのように影響しますか?
挿入により、後続のすべてのページ インデックスが 1 つ上にシフトされるため、コピーと挿入の後、元のページは予想よりも 1 つ先の位置になります。 パターン pdf.RemovePage(lastPageIndex + 1) はこの変化を捉えています。 ドキュメントの中央からページを移動する場合も、同じ原則が適用されます。つまり、挿入ポイントより後ろのインデックス N にあるページは、その前にコピーが挿入されると、インデックス N+1 になります。
保存前にインデックス計算を検証すると、特にドキュメントの長さが異なるバッチ パイプラインで、サイレント順序エラーを防ぐことができます。 各操作の前に pdf.PageCount に対して簡単なチェックを行うことで、ドキュメントのサイズに関係なくロジックが正しい状態に保たれます。
一度に複数のページを移動するプロセスは何ですか?
複数のページを再配置する必要がある場合、CopyPages は 1 回の呼び出しで特定のページ セットを抽出します。 このメソッドは、ゼロベースのページ インデックスのリストを受け入れ、指定された順序でそれらのページのみを含む新しい PdfDocument を返します。 このアプローチは、連続した付録ページのブロックをレポートの最後に移動したり、一連の概要ページを先頭に移動したりするシナリオに適しています。
using IronPdf;
using System.Collections.Generic;
// Load the quarterly report
var pdf = PdfDocument.FromFile("quarterly-report.pdf");
// Copy pages at indexes 1 and 2 (the second and third pages)
var selectedPages = pdf.CopyPages(new List<int> { 1, 2 });
// Append the copied pages to the end of the original document
var result = PdfDocument.Merge(pdf, selectedPages);
// Remove the originals at their former positions (now indexes 1 and 2)
result.RemovePages(new List<int> { 1, 2 });
// Write the reordered result to a new path
result.SaveAs("quarterly-report-reordered.pdf");
using IronPdf;
using System.Collections.Generic;
// Load the quarterly report
var pdf = PdfDocument.FromFile("quarterly-report.pdf");
// Copy pages at indexes 1 and 2 (the second and third pages)
var selectedPages = pdf.CopyPages(new List<int> { 1, 2 });
// Append the copied pages to the end of the original document
var result = PdfDocument.Merge(pdf, selectedPages);
// Remove the originals at their former positions (now indexes 1 and 2)
result.RemovePages(new List<int> { 1, 2 });
// Write the reordered result to a new path
result.SaveAs("quarterly-report-reordered.pdf");
Imports IronPdf
Imports System.Collections.Generic
' Load the quarterly report
Dim pdf = PdfDocument.FromFile("quarterly-report.pdf")
' Copy pages at indexes 1 and 2 (the second and third pages)
Dim selectedPages = pdf.CopyPages(New List(Of Integer) From {1, 2})
' Append the copied pages to the end of the original document
Dim result = PdfDocument.Merge(pdf, selectedPages)
' Remove the originals at their former positions (now indexes 1 and 2)
result.RemovePages(New List(Of Integer) From {1, 2})
' Write the reordered result to a new path
result.SaveAs("quarterly-report-reordered.pdf")
複数ページの並べ替え出力

このコードは、ソース ドキュメントから 2 ページをコピーし、PdfDocument.Merge を使用して最後に結合してから、元のページを削除して並べ替えを完了します。 Merge メソッドは、元のドキュメントと抽出されたページの順に両方の入力を結合した新しい PdfDocument オブジェクトを返します。 重複したオリジナルを削除すると、最終的なドキュメントは、冗長なコンテンツがなく、意図した順序のままになります。
RemovePages メソッドは、ゼロベースのインデックスのリストを受け入れ、指定されたすべてのページを 1 回のパスで削除します。 複数のページを削除する場合は、ループ内で RemovePage を呼び出すのではなく、1 回の呼び出しですべてのインデックスを指定します。これは、個々の削除によって残りのインデックスがシフトされ、off-by-one エラーが発生する可能性があるためです。
PDF の結合または分割チュートリアルでは、ページ範囲による分割など、ドキュメントを結合および分割するための追加の戦略について説明します。
連続していないページ グループをどのように処理しますか?
CopyPages は任意の IEnumerable<int> を受け入れるため、連続しないページも自然にサポートされます。 new List<int> { 0, 3, 7 } を渡して、1 ページ目、4 ページ目、8 ページ目をこの順序で 1 つのドキュメントにコピーします。 インデックス リストはソートする必要がないため、出力シーケンスを完全に制御できます。 この柔軟性は、複数の章からなるレポートから概要ページのみを抽出するなど、長いソース ファイル全体の特定のページからカスタム ドキュメントを組み立てる場合に役立ちます。
サブセットを移動するのではなく、ドキュメントを完全に並べ替えることが目的である場合は、すべてのページ位置を必要な順序でリストするインデックス配列を作成し、それを CopyPages に渡すと、並べ替えられたドキュメントが 1 回の操作で作成されます。 PDF ページの並べ替え C# チュートリアルでは、このドキュメント全体の並べ替えパターンについて詳しく説明します。
2 つの PDF ファイル間でページを移動するにはどうすればよいですか?
ある PDF ドキュメントから別の PDF ドキュメントにページを転送する場合は、同じコピー挿入パターンに従い、2 つの別個の PdfDocument インスタンスに渡って適用されます。 これは、複数のソース ファイルのコンテンツを統合する場合の標準的な方法です。たとえば、選択した承認ページをドラフトから最終的な契約文書に移動します。
using IronPdf;
// Load the source and destination documents
var sourceDoc = PdfDocument.FromFile("source-document.pdf");
var destinationDoc = PdfDocument.FromFile("destination-document.pdf");
// Extract the first page (index 0) from the source document
var pageToMove = sourceDoc.CopyPage(0);
// Insert the extracted page at position 2 in the destination (third page slot)
destinationDoc.InsertPdf(pageToMove, 2);
// Save the updated destination document
destinationDoc.SaveAs("destination-document-updated.pdf");
// Remove the transferred page from the source and save separately
sourceDoc.RemovePage(0);
sourceDoc.SaveAs("source-document-updated.pdf");
using IronPdf;
// Load the source and destination documents
var sourceDoc = PdfDocument.FromFile("source-document.pdf");
var destinationDoc = PdfDocument.FromFile("destination-document.pdf");
// Extract the first page (index 0) from the source document
var pageToMove = sourceDoc.CopyPage(0);
// Insert the extracted page at position 2 in the destination (third page slot)
destinationDoc.InsertPdf(pageToMove, 2);
// Save the updated destination document
destinationDoc.SaveAs("destination-document-updated.pdf");
// Remove the transferred page from the source and save separately
sourceDoc.RemovePage(0);
sourceDoc.SaveAs("source-document-updated.pdf");
Imports IronPdf
' Load the source and destination documents
Dim sourceDoc = PdfDocument.FromFile("source-document.pdf")
Dim destinationDoc = PdfDocument.FromFile("destination-document.pdf")
' Extract the first page (index 0) from the source document
Dim pageToMove = sourceDoc.CopyPage(0)
' Insert the extracted page at position 2 in the destination (third page slot)
destinationDoc.InsertPdf(pageToMove, 2)
' Save the updated destination document
destinationDoc.SaveAs("destination-document-updated.pdf")
' Remove the transferred page from the source and save separately
sourceDoc.RemovePage(0)
sourceDoc.SaveAs("source-document-updated.pdf")
クロスドキュメント転送出力

このコードは 2 つのドキュメントを個別に読み込み、CopyPage を使用してソースからページをコピーし、InsertPdf を使用して指定されたインデックスの宛先に挿入します。 ソースと宛先は異なるパスに別々のファイルとして保存されるため、操作中にどちらも他方を上書きしません。 最初に宛先を保存し、次にソースを保存すると、CopyPage が独立したコピーを生成するため安全です。 RemovePage が呼び出されるまで、ソース ドキュメントは変更されません。
両方の SaveAs 呼び出しはファイル システムに書き込みますが、 IronPDF はPdfDocument の BinaryData および Stream 出力メソッドを通じてメモリ内ワークフローもサポートします。 これは、変更された PDF をディスクに書き込まずに HTTP 応答として返す必要がある Web アプリケーションで役立ちます。 PDF ページの変換ガイドでは、追加のメモリ内操作パターンについて説明します。
ページを移動するときにブックマークと注釈をどのように保持しますか?
ページが CopyPage を使用してコピーされると、 IronPDF はテキスト、画像、フォーム フィールド、レンダリング プロパティなどのページの視覚的なコンテンツを保持します。 移動されたページのみを参照するアウトライン (ブックマーク) はコピーとともに移動しますが、複数のページを参照するドキュメント間のブックマーク階層は自動的に更新されません。 ブックマーク ツリーが複雑なドキュメントの場合は、ページを移動した後に PDF リーダーで出力を確認し、内部ナビゲーション リンクが正しい宛先を指していることを確認します。
ページ レイヤーに直接埋め込まれた注釈とフォーム フィールド データは、コピー操作によって保持されます。 ソース ドキュメントが内部リンクに名前付きの宛先を使用する場合、コピーされたページ内でそれらの宛先の名前は保持されますが、宛先ドキュメントのカタログに名前付きの宛先が登録されていない限り、宛先ドキュメントの他の部分のリンクは解決されません。
PDFページの並べ替えの一般的な使用例とは
開発者は、さまざまな実用的なシナリオにわたって PDF ページを移動および並べ替える必要があります。 PDF 仕様で定義されている PDF ページ モデルでは、各ページがドキュメントのページ ツリー内の独立したオブジェクトとして表されます。そのため、ドキュメントの長さに関係なく、個々のページでのコピー、挿入、削除の操作は常に有効です。 パターンを理解することは、さまざまな入力構造を処理するドキュメント処理パイプラインを設計するときに役立ちます。
| シナリオ | 標準的な操作 | IronPDFメソッド |
|---|---|---|
| 月刊ニュースレターの組み立て | 表紙または目次を前面に移動する | `CopyPage` 、 `InsertPdf` 、 `RemovePage` |
| レポート生成 | 概要ページの位置を変更したり、セクション区切りを挿入したりする | `CopyPages` 、 `Merge` 、 `RemovePages` |
| 文書統合 | 複数のソースファイルから選択したページを 1 つの出力にまとめます | `CopyPage` 、 `InsertPdf` 、名前を付け`SaveAs` |
| アーカイブの再編成 | 参照ファイルのページを時系列またはカテゴリ別に並べ替える | `CopyPages` 、 `Merge` 、 `RemovePages` |
| 契約書の準備 | 承認ページまたは署名ページを必要な位置に移動する | `CopyPage` 、 `InsertPdf` 、 `RemovePage` |
ページ操作以外にも、 IronPDFは同じパイプラインで幅広いドキュメント操作をサポートしています。ヘッダーとフッターの追加、透かしの適用、デジタル署名の追加はすべて同じAPIで実行できるため、複数の変換を連鎖的に実行して最終保存を行うことができます。 IronPDF の機能ページでは、利用可能なすべての機能の概要が説明されています。
ページの位置がドキュメント コンテンツによって決定される自動化シナリオ (特定のセクションを見つけた後に承認ページを挿入するなど) については、 "PDF ファイルの編集"チュートリアルで、ページの並べ替えと組み合わせることができるテキスト検索とコンテンツ主導の操作手法について説明します。
大きなドキュメントでページを移動するときにパフォーマンスをどのように処理しますか?
IronPDFでのページ操作はメモリ内のドキュメント表現に基づいて行われるため、パフォーマンスはドキュメントのサイズと適用される操作の数に応じて変化します。 大きな PDF の場合、いくつかのパターンを使用すると処理を効率的に行うことができます。
必要最小限のページ数で作業すると、メモリのオーバーヘッドが削減されます。 500 ページのドキュメントをロードして 2 ページを移動する代わりに、最初に CopyPages を使用してドキュメントをセクションに分割し、小さいセットで並べ替えを実行してから、Merge を使用して再構成します。 Split PDF Pages の例では、この分解と再構成のパターンを示しています。
多数のドキュメントにわたってページを移動するバッチ処理パイプラインの場合、各保存後に PdfDocument インスタンスを破棄して、メモリをすぐに解放します。 PdfDocument はIDisposableを実装しているので、各インスタンスを using ステートメントでラップすると、パイプラインの途中で例外が発生した場合でも確定的なクリーンアップが保証されます。
using IronPdf;
// Use 'using' declarations to ensure deterministic disposal
using var source = PdfDocument.FromFile("source-large.pdf");
using var destination = PdfDocument.FromFile("destination-large.pdf");
var pageToTransfer = source.CopyPage(0);
destination.InsertPdf(pageToTransfer, 0);
destination.SaveAs("destination-updated.pdf");
source.RemovePage(0);
source.SaveAs("source-updated.pdf");
using IronPdf;
// Use 'using' declarations to ensure deterministic disposal
using var source = PdfDocument.FromFile("source-large.pdf");
using var destination = PdfDocument.FromFile("destination-large.pdf");
var pageToTransfer = source.CopyPage(0);
destination.InsertPdf(pageToTransfer, 0);
destination.SaveAs("destination-updated.pdf");
source.RemovePage(0);
source.SaveAs("source-updated.pdf");
Imports IronPdf
' Use 'Using' blocks to ensure deterministic disposal
Using source = PdfDocument.FromFile("source-large.pdf")
Using destination = PdfDocument.FromFile("destination-large.pdf")
Dim pageToTransfer = source.CopyPage(0)
destination.InsertPdf(pageToTransfer, 0)
destination.SaveAs("destination-updated.pdf")
source.RemovePage(0)
source.SaveAs("source-updated.pdf")
End Using
End Using
ここでの using 宣言により、PdfDocument 呼び出しが完了した後に両方の SaveAs オブジェクトが破棄され、基礎となるメモリ バッファーが直ちに解放されます。 このパターンは、多くの要求が同じサーバー上で同時にドキュメントを処理する可能性があるASP.NET Coreアプリケーションでは特に重要です。 メモリセーフなドキュメント処理に関する追加の API の詳細については、 IronPDF API リファレンスを参照してください。
次のステップは何ですか?
C# で PDF ページを移動および並べ替えるには、コピー、挿入、削除のシーケンスで適用される 3 つのIronPDFメソッド InsertPdf、および RemovePage が必要です。 同じパターンは、1 つのドキュメント内で 1 ページを移動することから、複数のファイル間でページを一括転送することまで適用できます。 IronPDF は同じ API を使用して VB .NETでも動作し、ページ操作メソッドは.NET 8 や.NET 10 を含むサポートされているすべて for .NETプラットフォームで利用できます。
関連する機能について詳しくは、 "PDF ページの追加、コピー、削除"ガイドで、ページ レベルのあらゆる方法について詳しく説明しています。 ページ インデックス配列を使用してドキュメント全体を並べ替える方法については、 "PDF でページの並べ替え C#"の記事でその方法について説明しています。
プロジェクトにPDFページ操作を追加する準備はできましたか? 開発中にすべてのIronPDF機能にアクセスするには無料トライアルを開始するか、ライセンスを購入して今すぐ本番環境に展開してください。
よくある質問
C#を使用してPDF内のページを別の位置に移動するにはどうすればよいですか?
IronPDFの3ステップパターンを使用してください:CopyPage(pageIndex)を呼び出してページを抽出し、InsertPdf(copiedPage, targetIndex)を呼び出して新しい位置に配置し、最後にRemovePage(originalIndex + 1)を呼び出して元のページを削除します(挿入によるインデックスシフトを考慮して1を追加します)。
IronPDFで複数のページを一度に移動するにはどうすればよいですか?
CopyPages(new Listを呼び出してインデックスで特定のページを抽出し、次にPdfDocument.Merge(original, copiedPages)を使用してそれらを追加し、RemovePages(new Listで元の位置からそれらを削除します。
C#でページをあるPDFファイルから別のPDFファイルに転送するにはどうすればよいですか?
PdfDocument.FromFileを使用して両方のドキュメントをロードし、ソースドキュメントでCopyPage(index)を呼び出し、宛先ドキュメントでInsertPdf(page, position)を呼び出してから、それぞれをSaveAsで保存します。オプションとしてRemovePageを使用してソースから転送されたページを削除することができます。
挿入後にページを削除するには、なぜ元のインデックスに1を追加する必要があるのですか?
ページが元のページのインデックスの前に挿入されると、その後のすべてのページが1つ上にシフトします。元のページがインデックスNにあった場合、その前に挿入すると、元のページはインデックスN+1になります。InsertPdf後にRemovePageを呼び出す際、常にこのシフトを考慮してください。
IronPDFはゼロベースのページインデックスを使用していますか?
はい。IronPDFはAPI全体でゼロベースのインデックスを使用します。最初のページはインデックス0に、2番目のページはインデックス1にあります。最後のページのインデックスはPdfDocument.PageCount - 1です。この範囲外のインデックスを渡すと、ArgumentOutOfRangeExceptionがスローされます。
IronPDFを使用して非連続のページを移動できますか?
はい。CopyPagesメソッドは任意のIEnumerableを受け入れるため、new Listのように非連続のインデックスを渡すことができます。ページはドキュメント順ではなく、指定した順序で返されます。
IronPDFを使用してページを移動するときにブックマークや注釈は保持されますか?
ページレベルのビジュアルコンテンツ(テキスト、画像、フォームフィールド)はCopyPageを使用する際に保持されます。移動したページのみを参照するブックマークはコピーと共に移動します。複数のページを参照するクロスドキュメントブックマーク階層は自動的に更新されないため、ページ移動後に出力でナビゲーションリンクを必ず確認してください。
バッチパイプラインでPdfDocumentオブジェクトを適切に破棄するにはどうすればよいですか?
using var pdf = PdfDocument.FromFile(path);宣言を使用して、SaveAs呼び出しの完了後に決定性のある破棄を保証します。これにより、ガベージコレクションを待たずにメモリバッファが即座に解放され、高スループットASP.NET Coreアプリケーションでは非常に重要です。


