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); } }
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(); } }