Пример #1
0
        public void PrintAsPDF(string filename, Project project)
        {
            // first, just start beginning of tile downloading...

            string      localdata      = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\ResTBDesktop";
            PdfDocument mapTemplate    = PdfReader.Open(localdata + "\\PrintTemplates\\A4_landscape.pdf", PdfDocumentOpenMode.Modify);
            PdfDocument outputDocument = new PdfDocument();

            outputDocument.PageLayout = mapTemplate.PageLayout;
            PdfPage page = mapTemplate.Pages[0];

            page             = outputDocument.AddPage();
            page.Orientation = mapTemplate.Pages[0].Orientation;
            page.Width       = mapTemplate.Pages[0].Width;
            page.Height      = mapTemplate.Pages[0].Height;
            int dx = (int)page.Width.Point, dy = (int)page.Height.Point;
            // calculate aspect
            var    diffX  = AxMap.Extents.xMax - AxMap.Extents.xMin;
            double aspect = ((double)dy / dx);
            int    diffY  = (int)(aspect * diffX);

            // start tile loading for cache
            Extents MapExtents = new Extents();

            MapExtents.SetBounds(AxMap.Extents.xMin, AxMap.Extents.yMin, AxMap.Extents.zMin, AxMap.Extents.xMax, AxMap.Extents.yMin + diffY, AxMap.Extents.zMax);

            AxMap.TilesLoaded += AxMap_TilesLoaded;
            int width = (int)(dx * (96.0 / 72.0) * 1.5);

            this.filename = filename;
            this.project  = project;
            bool shouldwait = AxMap.LoadTilesForSnapshot(MapExtents, (int)(dx * (96.0 / 72.0) * 2), "Snapshot");

            if (shouldwait)
            {
                AxMap.TilesLoaded -= AxMap_TilesLoaded;
                PrintAsPDFAfterTilesAreLoaded();
            }
        }