Annotation3D.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
// 
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Annotations;
using DsPdfWeb.Demos.Common;

namespace DsPdfWeb.Demos.Basics
{
    // このサンプルでは、Annotation3Dを使用してPDFにインタラクティブな3Dモデルを埋め込む方法を示します。
    public class Annotation3D
    {
        public int CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var page = doc.NewPage();

            var rc = Util.AddNote(
                "下の表示領域には、3Dモデルを含む Model3DAnnotation が配置されています。" +
                "このページが表示されると自動的に有効になりますが、Adobe Acrobat/Reader などの" +
                "3D表示機能をネイティブにサポートしたPDFリーダーでのみ、インタラクティブに操作・閲覧できます。", page);

            // 3Dモデル(U3D形式)を読み込みます。
            var modelPath = Path.Combine("Resources", "3DModels", "plane64x64_base.u3d");
            using var modelStream = File.OpenRead(modelPath);

            // ページが表示された際に有効になる、モデルを示す3D注釈を追加します。
            var m3d = new Model3DAnnotation
            {
                Stream = new Model3DStream(modelStream, Model3DStreamFormat.U3D),
                ActivationCondition = Model3DActivationCondition.PageBecomesVisible,
                DeactivationCondition = Model3DDeactivationCondition.PageBecomesInvisible,
                Page = page,
                Rect = new RectangleF(rc.X, rc.Bottom + 18, 72 * 5, 72 * 4)
            };

            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}