Exemple #1
0
        public async Task SaveAs()
        {
            CloseMenu?.Invoke();
            await Task.Delay(0);

            try
            {
                SaveFileDialog diagSaveDoc = new SaveFileDialog();
                diagSaveDoc.Filter = "Kritzel Documents|*.krit|PDF Files|*.pdf|JPEG (Current Page)|*.jpg|Windows Bitmap (Current Page)|*.bmp|Portable Network Graphic (Current Page)|*.png";
                if (diagSaveDoc.ShowDialog(window) == DialogResult.OK)
                {
                    FileInfo info = new FileInfo(diagSaveDoc.FileName);
                    string   ext  = info.Extension.ToLower();
                    if (ext == ".krit")
                    {
                        document.SaveDocument(diagSaveDoc.FileName);
                    }
                    else if (ext == ".pdf")
                    {
                        Dialogues.ProgressWindow wnd = new Dialogues.ProgressWindow("Save to PDF");
                        wnd.TopMost = true;
                        wnd.Show();
                        try
                        {
                            document.SavePDF(diagSaveDoc.FileName, wnd.ProgressBar);
                            //inkControl1.Page.SavePDF(sfd.FileName);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Error while saving File:\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        wnd.Close();
                    }
                    else if (ext == ".jpg" || ext == ".jpeg" || ext == ".bmp" || ext == ".png")
                    {
                        float    factor = 5;
                        KPage    page   = control.Page;
                        SizeF    size   = page.Format.GetPixelSize();
                        Bitmap   bmp    = new Bitmap((int)(size.Width * factor), (int)(size.Height * factor));
                        Graphics g      = Graphics.FromImage(bmp);
                        g.Clear(Color.White);
                        Renderer.GdiRenderer r = g.GetRenderer();
                        g.ScaleTransform(factor, factor);
                        page.DrawPDFHQ(r, bmp.Height);
                        page.Draw(r);
                        bmp.Save(diagSaveDoc.FileName);
                    }
                    else
                    {
                        MessageBox.Show("Error export File");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error saving File", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #2
0
        private async void btnPrint_Click(object sender, EventArgs e)
        {
            CloseMenu?.Invoke();
            await Task.Delay(0);

            PrintDialog pd = new PrintDialog();

            pd.AllowCurrentPage            = true;
            pd.AllowSomePages              = true;
            pd.Document                    = new PrintDocument();
            pd.UseEXDialog                 = true;
            pd.PrinterSettings.FromPage    = 1;
            pd.PrinterSettings.ToPage      = document.Pages.Count;
            pd.PrinterSettings.MaximumPage = document.Pages.Count;
            pd.PrinterSettings.MinimumPage = 1;
            int currentPage = 0;

            pd.Document.PrintPage += (_sender, _e) =>
            {
                if (pd.PrinterSettings.PrintRange == PrintRange.AllPages)
                {
                    Renderer.GdiRenderer r = new Renderer.GdiRenderer(_e.Graphics);
                    document.Pages[currentPage].DrawPDFHQ(r, (int)Util.MmToPoint(_e.PageBounds.Height));
                    document.Pages[currentPage++].Draw(r);
                    _e.HasMorePages = currentPage < document.Pages.Count;
                }
                else if (pd.PrinterSettings.PrintRange == PrintRange.CurrentPage)
                {
                    Renderer.GdiRenderer r = new Renderer.GdiRenderer(_e.Graphics);
                    control.Page.DrawPDFHQ(r, (int)Util.MmToPoint(_e.PageBounds.Height));
                    control.Page.Draw(r);
                    _e.HasMorePages = false;
                }
                else if (pd.PrinterSettings.PrintRange == PrintRange.SomePages)
                {
                    int fromPage           = Math.Max(0, pd.PrinterSettings.FromPage - 1);
                    int toPage             = Math.Min(document.Pages.Count - 1, pd.PrinterSettings.ToPage - 1);
                    Renderer.GdiRenderer r = new Renderer.GdiRenderer(_e.Graphics);
                    int realPage           = currentPage++ + fromPage;
                    document.Pages[realPage].DrawPDFHQ(r, (int)Util.MmToPoint(_e.PageBounds.Height));
                    document.Pages[realPage].Draw(r);
                    _e.HasMorePages = realPage < toPage;
                }
            };
            if (pd.ShowDialog() == DialogResult.OK)
            {
                pd.Document.Print();
            }
        }