예제 #1
0
    public static void Main(string[] argv)
    {
        if (argv.Length < 2)
        {
            Console.WriteLine("Usage: sheet input.mid output_prefix(_[page_number].png)");
            return;
        }
        string     filename = argv[0];
        SheetMusic sheet    = new SheetMusic(filename, null);

        int    numpages       = sheet.GetTotalPages();
        string image_filename = argv[1];

        for (int page = 1; page <= numpages; page++)
        {
            Bitmap bitmap = new Bitmap(SheetMusic.PageWidth + 40,
                                       SheetMusic.PageHeight + 40);
            Graphics g = Graphics.FromImage(bitmap);
            sheet.DoPrint(g, page);
            bitmap.Save(image_filename + "_" + page + ".png",
                        System.Drawing.Imaging.ImageFormat.Png);
            g.Dispose();
            bitmap.Dispose();
        }
    }
예제 #2
0
        /// <summary>
        /// Create PDF file
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnPrint_Click(object sender, EventArgs e)
        {
            string message = string.Empty;

            int            numpages = sheetmusic.GetTotalPages();
            SaveFileDialog dialog   = new SaveFileDialog()
            {
                ShowHelp        = true,
                CreatePrompt    = false,
                OverwritePrompt = true,
                DefaultExt      = "pdf",
                Filter          = "PDF Document (*.pdf)|*.pdf",
            };

            /* The initial filename in the dialog will be <midi filename>.pdf */
            string initname = Path.GetFileName(CurrentPath);

            initname        = initname.Replace(".mid", "") + ".pdf";
            dialog.FileName = initname;

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                // Create a dialog with a progress bar
                Form progressDialog = new Form()
                {
                    Text      = "Generating PDF Document...",
                    BackColor = Color.White,
                    Size      = new Size(400, 80),
                };

                ProgressBar progressBar = new ProgressBar()
                {
                    Parent   = progressDialog,
                    Size     = new Size(300, 20),
                    Location = new Point(10, 10),
                    Minimum  = 1,
                    Maximum  = numpages + 2,
                    Value    = 2,
                    Step     = 1,
                };

                progressDialog.Show();
                Application.DoEvents();
                System.Threading.Thread.Sleep(500);


                string filename = dialog.FileName;
                try
                {
                    FileStream stream = new FileStream(filename, FileMode.Create);
                    string     title  = Path.GetFileName(filename);

                    Karaboss.PDFWithImages pdfdocument = new PDFWithImages(stream, title, numpages);
                    for (int page = 1; page <= numpages; page++)
                    {
                        Bitmap bitmap = new Bitmap(SheetMusic.PageWidth + 40,
                                                   SheetMusic.PageHeight + 40);
                        Graphics g = Graphics.FromImage(bitmap);
                        sheetmusic.DoPrint(g, CurrentPath, page, numpages);
                        pdfdocument.AddImage(bitmap);
                        g.Dispose();
                        bitmap.Dispose();
                        progressBar.PerformStep();
                        Application.DoEvents();
                    }
                    pdfdocument.Save();
                    stream.Close();
                    System.Threading.Thread.Sleep(500);
                }
                catch (System.IO.IOException ep)
                {
                    message  = "";
                    message += "MidiSheetMusic was unable to save to file " + filename;
                    message += " because:\n" + ep.Message + "\n";

                    MessageBox.Show(message, "Error Saving File",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                progressDialog.Dispose();
            }
        }