private void MainWindow_FormClosing(object sender, FormClosingEventArgs e) { bool cancel = false; bool user = false; if (e.CloseReason == CloseReason.UserClosing) { if (Util.AskForSave(doc)) { user = true; } else { cancel = true; } } if (!cancel) { ChangeClipboardChain(this.Handle, clipboardViewerNewNext); if (user) { var tempdir = TmpManager.GetTmpDir(); if (tempdir.Exists) { tempdir.Delete(true); } } doc.Dispose(); Configuration.SaveConfig(); } else { e.Cancel = true; } }
public void DrawPDFHQ(BaseRenderer r, int height) { if (OriginalPage != null) { string filename = Path.Combine(TmpManager.GetTmpDir().FullName, "tmp.pdf"); using (PdfDocument doc = new PdfDocument()) { doc.AddPage(OriginalPage); doc.Save(filename); } using (Bitmap bmp = MupdfSharp.PageRenderer.Render(filename, height, new int[] { 0 })[0]) { using (var img = new Renderer.Image(bmp)) { var sizePx = Format.GetPixelSize(); r.DrawImage(img, new RectangleF(0, 0, sizePx.Width, sizePx.Height)); } } File.Delete(filename); } }
public void OnShow(InkControl control) { if (OriginalPage != null && BackgroundImage == null) { string path = TmpManager.GetTmpDir() + "\\render.pdf"; PdfDocument doc = new PdfDocument(); doc.Pages.Add(OriginalPage); doc.Save(path); Bitmap[] bmp = MupdfSharp.PageRenderer.Render(path, 50, 0); BackgroundImage = new Renderer.Image(bmp[0]); loaderThread = new Thread(delegate() { Bitmap[] bmp2 = MupdfSharp.PageRenderer.Render(path, PDFImporter.PAGETHEIGHTPIXEL, 0); BackgroundImage.Dispose(); BackgroundImage = new Renderer.Image(bmp2[0]); control.RefreshPage(); }); loaderThread.Start(); } }
static void Main() { SetProcessDpiAwareness(PROCESS_DPI_AWARENESS.PROCESS_SYSTEM_DPI_AWARE); Environment.CurrentDirectory = new FileInfo(Application.ExecutablePath).DirectoryName; MainLog = new MessageLog(); ResManager.Init(); MainLog.SetOutputFile(new FileInfo(ResManager.GetLogfileName())); MainLog.AddLong(0, MessageType.MSG, "Program started", "current directory: " + Environment.CurrentDirectory + "\n\nargs:\n" + string.Join("\n", Environment.GetCommandLineArgs()) + "\n\nfiles:\n" + string.Join("\n", Directory.GetFiles("."))); MainLog.AddLong(0, MessageType.MSG, "Build info", ResManager.GetText("buildinfo.txt")); Configuration.StoreAsDefault(); Configuration.LoadConfig(); Style.SetStyle(); ResManager.DeleteOldLogs(Configuration.NumberOfLogs); TmpManager.Init(); Language.Init(); MainLog.Add(MessageType.MSG, "Set Pointer Gamma"); PointerManager.Gamma = Configuration.PreassureGamma; MainLog.Add(MessageType.MSG, "Load Window Icon"); WindowIcon = Properties.Resources.KritzelIcon;//Icon.FromHandle(Properties.Resources.KritzelIcon.GetHicon()); MainLog.Add(MessageType.MSG, "Look for temporary Data"); RestoreData = TmpManager.OvertakeFirstUnused(); MainLog.Add(MessageType.MSG, "Enable Window"); if (Configuration.EnableVisualStyle) { Application.EnableVisualStyles(); } Application.SetCompatibleTextRenderingDefault(false); //DebugInterface.Start(); Application.Run(new MainWindow()); //DebugInterface.Stop(); HTTPCast.StopCasting(); }
public bool LoadDocument(string path, MessageLog log) { log?.Add(MessageType.MSG, "Loading File '{0}'", path); DirectoryInfo dir = TmpManager.GetTmpDir(); if (path != null) { ZipFile zip = new ZipFile(path); if (dir.Exists) { dir.RemoveAll(); } try { zip.ExtractAll(dir.FullName); } catch (BadPasswordException) { Dialogues.PasswordDialog dialog = new Dialogues.PasswordDialog(); var res = dialog.ShowDialog(out string pw, delegate(string _password) { try { zip.Password = _password; zip.ExtractAll(dir.FullName); return(true); } catch (BadPasswordException) { return(false); } }); if (res == DialogResult.Cancel) { return(false); } } } FileInfo docFile = new FileInfo(dir + "\\document.kritzel"); XmlReader reader = XmlReader.Create(docFile.FullName); XmlDocument doc = new XmlDocument(); doc.Load(reader); reader.Close(); XmlNode root = doc.LastChild; XmlNode pagesNode = root.GetNode("Pages"); //Bitmap[] bgrs = new Bitmap[0]; PdfDocument pdfDoc = null; bool loadPdf = false; if (File.Exists(dir + "\\.pdf")) { //bgrs = MupdfSharp.PageRenderer.Render(dir + "\\.pdf", Dialogues.PDFImporter.PAGETHEIGHTPIXEL); pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(dir + "\\.pdf", PdfDocumentOpenMode.Modify | PdfDocumentOpenMode.Import); loadPdf = true; } int ind = 1; foreach (XmlNode xmlPage in pagesNode.GetNodes("Page")) { string src = xmlPage.Attributes.GetNamedItem("src").InnerText; string text = File.ReadAllText(dir.FullName + "\\" + src); KPage page = new KPage(this); log?.Add(MessageType.MSG, "Loading Page {0}", ind++); page.LoadFromString(text, log); int pdfInd; int.TryParse(xmlPage.Attributes["pdf"].Value, out pdfInd); if (pdfInd >= 0 && loadPdf) { //page.BackgroundImage = new Renderer.Image(bgrs[pdfInd]); page.OriginalPage = pdfDoc.Pages[pdfInd]; page.PdfRenderPath = TmpManager.NewFilename(TmpManager.GetTmpDir() + "\\render", "page", ".png"); } Pages.Add(page); } var defForm = doc.GetElementsByTagName("DefaultFormat"); if (defForm.Count > 0) { DefaultFormat = defForm[0].InnerText; } if (loadPdf) { pdfDoc.Close(); pdfDoc.Dispose(); } this.FilePath = path; SetCurrentStateAsSaved(); return(true); }
public bool SaveDocument(string path) { try { Console.WriteLine("Saving file to ", path != null ? path : "temp"); MessageLog log = new MessageLog(Program.MainLog); if (path == null) { log.Add(MessageType.MSG, "Saving file to temp dir"); } else { log.Add(MessageType.MSG, "Saving file to {0}", path); } List <FileInfo> files = new List <FileInfo>(); DirectoryInfo dir = TmpManager.GetTmpDir(); if (dir.Exists) { dir.RemoveAll(); } dir.Create(); FileInfo docFile = new FileInfo(dir + "\\document.kritzel"); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; settings.NewLineChars = "\n"; files.Add(docFile); using (XmlWriter writer = XmlWriter.Create(docFile.FullName, settings)) { PdfDocument pdfDoc = new PdfDocument(); writer.WriteStartElement("Document"); writer.WriteElementString("DefaultFormat", DefaultFormat); writer.WriteStartElement("Pages"); for (int i = 0; i < Pages.Count; i++) { writer.WriteStartElement("Page"); FileInfo pageFile = new FileInfo(dir + "\\Page" + i + ".xml"); string page = Pages[i].SaveToString(); File.WriteAllText(pageFile.FullName, page); files.Add(pageFile); writer.WriteAttributeString("src", pageFile.Name); string pdf = "-1"; if (Pages[i].OriginalPage != null) { string pdfName = "Page" + i + ".pdf"; pdf = "" + pdfDoc.Pages.Count; pdfDoc.AddPage(Pages[i].OriginalPage); } writer.WriteAttributeString("pdf", pdf); writer.WriteEndElement(); // Page } writer.WriteEndElement(); // Pages writer.WriteEndElement(); // Document writer.Close(); if (pdfDoc.Pages.Count > 0) { files.Add(new FileInfo(dir + "\\.pdf")); pdfDoc.Save(dir + "\\.pdf"); } if (path != null) { ZipFile zFile = new ZipFile(); foreach (FileInfo file in files) { zFile.AddFile(file.FullName, ""); } zFile.Save(path); SetCurrentStateAsSaved(); } } if (path != null) { this.FilePath = path; } } catch (Exception e) { Program.MainLog.Add(e); Dialogues.MsgBox.ShowOk(Language.GetText("Error.saveFile") + "\n" + e.Message); return(false); } return(true); }