DioDocs for PDF
ページ
機能 > ページ
このトピックの内容:

ドキュメントの各ページは、ページのコンテンツなどの属性の参照を含むページオブジェクトとして表されます。DioDocs for PDF の GrapeCity.Documents.Pdf アセンブリに保持されている Page クラスを使用して、ページを操作することができます。Page クラスは、GcPdfDocument 内の 1 つのページを表します。最初に、NewPage メソッドを使用して、PDF ドキュメントにページを追加する必要があります。新しく作成されたページは、ドキュメントのページのコレクションであるページコレクションに追加されます。このコレクションを使用して、要素(ページ)の追加、挿入、削除、移動などの標準的なコレクション操作を実行することができます。これらのページは、PDF ドキュメントの作成中に、ページごとに次のページプロパティを使用して変更できます。

ページの挿入

PDF ドキュメントに空白のページを挿入するには

  1. GcPdfDocument クラスのオブジェクトを作成します。
  2. GcPdfDocument オブジェクトを使用して、NewPage メソッドにアクセスします。
Page.cs
コードのコピー
GcPdfDocument doc = new GcPdfDocument();
// 空白のページを挿入します
var page = doc.NewPage();
先頭に戻る

特定のページの取得

ドキュメントから特定のページを取得するには

  1. PDF ドキュメントに追加されたすべてのページを含む、PageCollection クラスのインスタンスを作成します。
  2. PageCollection オブジェクトを使用し、そのインデックス値を使用して、特定のページにアクセスします。
Page.cs
コードのコピー
// 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);
先頭に戻る

ページプロパティの取得

ページプロパティを取得するには

  1. PDF ドキュメントに追加されたすべてのページを含む、PageCollection クラスのインスタンスを作成します。
  2. PageCollection オブジェクトを使用し、そのインデックス値を使用して、特定のページにアクセスします。
  3. そのページインデックスを使用して、特定のページに関連付けられている Size などのプロパティにアクセスします。
C#
コードのコピー
// 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);
先頭に戻る

ページプロパティの設定

ページプロパティを設定するには

  1. GcPdfDocument クラスのオブジェクトを作成します。
  2. GcPdfDocument オブジェクトを使用して、NewPage メソッドにアクセスします。
  3. ページオブジェクトを使用して、Rotate プロパティなどのページプロパティを設定します。
C#
コードのコピー
GcPdfDocument doc = new GcPdfDocument();
// 空白のページを挿入します
var page = doc.NewPage();
        
// ページのプロパティを設定します
page.Rotate = 90;
先頭に戻る

ページのサイズと向きの設定

ドキュメントで新しいページサイズと向きを設定するには

  1. NewPage メソッドを使用して、PDF ドキュメントに新しいページを追加します。
  2. ページオブジェクトを使用して、PaperKind プロパティと Landscape プロパティを設定します。
PageSize.cs
コードのコピー
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 プロパティを使用します。

C#
コードのコピー
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");
}

ContentStreams の操作

ContentStream オブジェクトは、ページ内にレンダリングされるグラフィカルな要素を記述する一連のインストラクションが含まれています。ContentStream は、1 つの PDF ドキュメント内で複数のグラフィック要素を使用する際に便利な機能です。PDF ドキュメントに追加されたすべてのコンテンツストリームは PageContentStreamCollection に格納されます。このクラスにアクセスして、項目をコンテンツストリームに追加したり、削除することができます。

ページでコンテンツストリームを使用するには

  1. PageContentStream クラスのオブジェクトを作成します。
  2. DrawString メソッドを使用して、グラフィック要素をコンテンツストリームに追加します。
  3. ドキュメントを保存します。
C#
コードのコピー
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 メソッドは、cloneAnnotationscloneFields という 2 つの追加のブール型パラメータもサポートしています。これらのパラメータを使用して、ユーザーは複製されるページ上の注釈とフィールドの複製を許可または制限できます。

C#
コードのコピー
// 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");

メモ:DioDocs for PDF の MergeWithDocument メソッドは、異なる PDF ファイル間でページをコピーします。 ドキュメントの結合の詳細については、「ドキュメントの結合」を参照してください。