Пример #1
0
        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;
            }
        }
Пример #2
0
 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);
     }
 }
Пример #3
0
        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();
            }
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }