フォームXObjectは、PDFドキュメント内のテキスト、グラフィック、ページ、画像などのオブジェクトを記述する方法です。これらのXObjectは、PDF文書に1回格納されるが、複数ページまたは同じページの複数個所で繰り返して参照され、そのたびに同じ結果を生成するオブジェクトです。したがって、フォームXObjectの一般的なユースケースの1つは、既存のPDFドキュメントのコンテンツを別のPDFにインポートすることです。フォームXObjectの詳細については、PDF 仕様 1.7(8.10項)を参照してください。
フォームXObjectを使用して、あるPDFドキュメントのコンテンツを別のPDFドキュメントにインポートするには
C# |
コードのコピー
|
---|---|
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 サンプルブラウザ を参照してください。