[]
ドキュメントの各ページは、ページのコンテンツなどの属性の参照を含むページオブジェクトとして表されます。DioDocs for PDF の GrapeCity.Documents.Pdf アセンブリに保持されている Page クラスを使用して、ページを操作することができます。Page クラスは、GcPdfDocument 内の 1 つのページを表します。最初に、NewPage メソッドを使用して、PDF ドキュメントにページを追加する必要があります。新しく作成されたページは、ドキュメントのページのコレクションであるページコレクションに追加されます。このコレクションを使用して、要素(ページ)の追加、挿入、削除、移動などの標準的なコレクション操作を実行することができます。これらのページは、PDF ドキュメントの作成中に、ページごとに次のページプロパティを使用して変更できます。
ページの向き:Landscape プロパティを使用して、現在のページの向きを設定できます。ページのデフォルトの向きは縦向きに設定されています。
境界:1 つのページに、アートボックス、ブリードボックス、クロップボックス、メディアボックス、トリムボックスという 5 つの境界を設定できます。これらは、次のように定義されます。
ページ境界の詳細については、PDF 仕様 1.7 (セクション 14.11.2)を参照してください。
ページサイズ:Size プロパティを使用して、現在のページのサイズを設定できます。
回転:Rotate プロパティを使用して、ページを時計回りに回転させる際の角度を設定できます。
コンテンツストリーム:ContentStreams プロパティを使用して、ページのコンテンツを表すコンテンツストリームのコレクションを取得できます。コンテンツストリームは、ページ内に描画されるグラフィカル要素を記述する一連のインストラクションから成るデータを PDF オブジェクトの形式で格納する PDF ストリームオブジェクトです。
PDF ドキュメントに空白のページを挿入するには
GcPdfDocument doc = new GcPdfDocument();
// 空白のページを挿入します
var page = doc.NewPage();
ドキュメントから特定のページを取得するには
// FileStreamを使用して既存のPDFをロードします
FileStream fileStream = File.OpenRead(args[0].ToString());
GcPdfDocument doc = new GcPdfDocument();
doc.Load(fileStream, null);
// ページのプロパティを取得するには、PageCollectionオブジェクトを使用します
PageCollection pageCollection = doc.Pages;
// ページの所有者を取得します
Console.WriteLine("ページの所有者: {0}", pageCollection[0].Owner);
ページプロパティを取得するには
// FileStreamを使用して既存のPDFをロードします
FileStream fileStream = File.OpenRead(args[0].ToString());
GcPdfDocument doc = new GcPdfDocument();
var page = doc.NewPage();
doc.Load(fileStream, null);
// 特定のページを取得するには、PageCollectionオブジェクトを使用します
PageCollection pageCollection = doc.Pages;
// 最初のページのサイズを取得します
Console.WriteLine("用紙サイズ: {0}", pageCollection[0].Size);
ページプロパティを設定するには
GcPdfDocument doc = new GcPdfDocument();
// 空白のページを挿入します
var page = doc.NewPage();
// ページのプロパティを設定します
page.Rotate = 90;
ドキュメントで新しいページサイズと向きを設定するには
var doc = new GcPdfDocument();
// デフォルトのページサイズは縦向きのLetter(8 1/2"x 11")です
var page = doc.NewPage();
// ページサイズと方向を変更します
page.PaperKind = PaperKind.A4;
page.Landscape = true;
DioDocs for PDF では、PDFドキュメント内のページを識別するためにページ番号だけでなく、重要な説明を持つページラベルを定義することもできます。ページラベルを使用して、ドキュメントを論理的に関連した一連のページ範囲に分割できます。さらに、1つのPDFドキュメントに交差しない複数のページラベルの範囲を追加することもできます。本機能は、PDFドキュメントに序文、謝辞、本文、索引などのさまざまなセクションが含まれている場合に役立ちます。
DioDocs for PDF の PageLabelingRange クラスは、範囲に対してページ番号のスタイルとその範囲を表す有意義なプレフィックスを定義するページラベルの範囲を示します。PDFドキュメントにページラベルを追加するには、GcPdfDocument クラスの PageLabelingRanges プロパティを使用します。
public void CreatePDF()
{
//GcPdfDocumentを初期化します
var doc = new GcPdfDocument();
//テキストレイアウトを定義します
var tl = new TextLayout(72);
tl.MaxWidth = doc.PageSize.Width;
tl.MaxHeight = doc.PageSize.Height;
TextSplitOptions to = new TextSplitOptions(tl)
{
MinLinesInFirstParagraph = 2,
MinLinesInLastParagraph = 2
};
doc.Pages.Add();
//ドキュメントにランダムなテキストを生成します
doc.Pages.Last.Graphics.DrawTextLayout(tl, PointF.Empty);
tl.Clear();
tl.Append(Common.Util.LoremIpsum(17));
tl.PerformLayout(true);
//ランダムなテキストを印刷します
while (true)
{
var splitResult = tl.Split(to, out TextLayout rest);
doc.Pages.Last.Graphics.DrawTextLayout(tl, PointF.Empty);
if (splitResult != SplitResult.Split)
break;
tl = rest;
var p = doc.Pages.Add();
}
//コンテンツページに対してPageLabelingRangeを定義します
//PageLabelingRangeはNumberingStyleのDecimalArabicを使用し、ページラベルのプレフィックスとして
//「Content Page, p. 」を使用します
doc.PageLabelingRanges.Add(2, new PageLabelingRange($"Content Page, p. ",
NumberingStyle.DecimalArabic, 1));
// 完了
doc.Save("NewPageLabel.pdf");
}
ContentStream オブジェクトは、ページ内にレンダリングされるグラフィカルな要素を記述する一連のインストラクションが含まれています。ContentStream は、1 つの PDF ドキュメント内で複数のグラフィック要素を使用する際に便利な機能です。PDF ドキュメントに追加されたすべてのコンテンツストリームは PageContentStreamCollection に格納されます。このクラスにアクセスして、項目をコンテンツストリームに追加したり、削除することができます。
ページでコンテンツストリームを使用するには
public void CreatePDF(Stream stream)
{
GcPdfDocument doc = new GcPdfDocument();
var page = doc.NewPage();
var g = page.Graphics;
const float In = 72;
var tf = new TextFormat()
{
Font = StandardFonts.Times,
FontSize = 12
};
// PageContentStreamオブジェクトを作成します
PageContentStream contentStream = new PageContentStream(doc);
// ContentStreamにグラフィックスを追加します
contentStream.Doc.Pages[0].Graphics.DrawString(
"1. サンプル文字列。",
tf, new PointF(In, In));
// ドキュメントを保存します
doc.Save(stream);
}
DioDocs for PDF を使用したページの実装の詳細については、DioDocs for PDF サンプルブラウザを参照してください。
DioDocs for PDF では、PageCollection クラスの ClonePage メソッドを使用して、PDF ファイルに指定されたインデックスから特定のページを複製し、同じ PDF ファイルの指定されたインデックスに挿入できます。ClonePage メソッドは、cloneAnnotations と cloneFields という 2 つの追加のブール型パラメータもサポートしています。これらのパラメータを使用して、ユーザーは複製されるページ上の注釈とフィールドの複製を許可または制限できます。
// GcPdfDocument を初期化します
GcPdfDocument doc = new GcPdfDocument();
// ストリームから PDF ファイルをロードします
var fs = new FileStream(Path.Combine("digital-signature-sample.pdf"), FileMode.Open,
FileAccess.Read);
doc.Load(fs);
// ページのクローンをインデックス 0 に作成してインデックス 1 に挿入し、フィールドをコピーしますが、注釈はスキップします
doc.Pages.ClonePage(0, 1, false, true);
// PDF ドキュメントを保存します
doc.Save("ClonePDFPageWithoutAnnotationsWithFields.pdf");
type=note
メモ:DioDocs for PDF の MergeWithDocument メソッドは、異なる PDF ファイル間でページをコピーします。 ドキュメントの結合の詳細については、「ドキュメントの結合」を参照してください。