[]
フォームXObjectは、PDFドキュメント内のテキスト、グラフィック、ページ、画像などのオブジェクトを記述する方法です。これらのXObjectは、PDF文書に1回格納されるが、複数ページまたは同じページの複数個所で繰り返して参照され、そのたびに同じ結果を生成するオブジェクトです。したがって、フォームXObjectの一般的なユースケースの1つは、既存のPDFドキュメントのコンテンツを別のPDFにインポートすることです。フォームXObjectの詳細については、PDF 仕様 1.7(8.10項)を参照してください。
フォームXObjectを使用して、あるPDFドキュメントのコンテンツを別のPDFドキュメントにインポートするには
static void Main(string[] args)
{
//一時PDFドキュメントを作成して既存のドキュメントをロードします
GcPdfDocument tempDoc = new GcPdfDocument();
FileStream fs = new FileStream(("SlidePages.pdf"), FileMode.Open, FileAccess.Read);
tempDoc.Load(fs);
// 新しいPDFドキュメントを作成します
GcPdfDocument mainDoc = new GcPdfDocument();
Page p;
GcPdfGraphics g;
TextFormat tf = new TextFormat()
{
Font = StandardFonts.HelveticaBold,
FontSize = 16,
ForeColor = Color.FromArgb(128, Color.Red),
};
//ロードしたPDFドキュメントのページを使用してFormXObjectのリストを作成します
var fxos = new List<FormXObject>();
tempDoc.Pages.ToList().ForEach(p_ => fxos.Add(new FormXObject(mainDoc, p_)));
for (int i = 0; i < fxos.Count; ++i)
{
p = mainDoc.NewPage();
g = p.Graphics;
var rcfx = new RectangleF(10, 50, 500, 600);
//FormXObjectを使用して対象のPDFドキュメントに描画します
g.DrawForm(fxos[i], rcfx, null, ImageAlign.ScaleImage);
g.DrawRectangle(rcfx, Color.Red);
g.DrawString($"Page {i + 1}", tf, rcfx, TextAlignment.Center, ParagraphAlignment.Center, false);
}
mainDoc.Save("FormXResult.pdf");
Console.WriteLine("終了するには任意のキーを押してください。");
Console.ReadKey();
}
DioDocs for PDFを使用したフォームXObject機能の実装の詳細 については、DioDocs for PDF サンプルブラウザ を参照してください。