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