Beispiel #1
0
        public void Print(string width)
        {
            // prepare a popup window for printing (a4 width, window height, centered)

            var preview = window.open("", "", "width=0,height=0");
            var a4      = (HtmlDivElement)preview.document.createElement("div");

            if (!string.IsNullOrEmpty(width))
            {
                a4.style.width = width;
            }
            else
            {
                a4.style.width = "210mm";
            }
            preview.document.As <HtmlDocument>().write("<!DOCTYPE html><html></head><body></body></html>");
            preview.document.body.appendChild(a4);

            var dualScreenLeft = JsTypeOf(window.screenLeft) != JsTypes.undefined
                ? window.screenLeft
                : screen.Member("left").As <int>();
            var dualScreenTop = JsTypeOf(window.screenTop) != JsTypes.undefined
                ? window.screenTop
                : screen.Member("top").As <int>();
            var screenWidth = JsTypeOf(window.innerWidth) != JsTypes.undefined
                ? window.innerWidth
                : JsTypeOf(document.documentElement.clientWidth) != JsTypes.undefined
                    ? document.documentElement.clientWidth
                    : screen.width;
            var screenHeight = JsTypeOf(window.innerHeight) != JsTypes.undefined
                ? window.innerHeight
                : JsTypeOf(document.documentElement.clientHeight) != JsTypes.undefined
                    ? document.documentElement.clientHeight
                    : screen.height;

            var w    = a4.offsetWidth + 50;
            var h    = window.innerHeight;
            var left = ((screenWidth / 2) - (w / 2)) + dualScreenLeft;
            var top  = ((screenHeight / 2) - (h / 2)) + dualScreenTop;

            preview.resizeTo(w, h);
            preview.moveTo(left, top);

            preview.focus();

            // render alphaTab
            var settings = Settings.Defaults;

            settings.ScriptFile         = Settings.ScriptFile;
            settings.FontDirectory      = Settings.FontDirectory;
            settings.Scale              = 0.8f;
            settings.StretchForce       = 0.8f;
            settings.DisableLazyLoading = true;
            settings.UseWebWorker       = false;

            var alphaTab = new JsApi(a4, settings);

            alphaTab.Renderer.PostRenderFinished += () =>
            {
                alphaTab.CanvasElement.style.height = "100%";
                preview.window.print();
            };
            alphaTab.SetTracks(Tracks);
        }