private void FillCombo() { if (PrefC.AtoZfolderUsed != DataStorageType.InDatabase) { comboFieldName.Items.Clear(); string[] files = null; if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ) { files = Directory.GetFiles(SheetUtil.GetImagePath()); } else //Cloud //Get file list { OpenDentalCloud.Core.TaskStateListFolders state = CloudStorage.ListFolderContents(SheetUtil.GetImagePath()); files = state.ListFolderPathsDisplay.ToArray(); } for (int i = 0; i < files.Length; i++) { //remove some common offending file types (non image files) if (files[i].EndsWith("db") || files[i].EndsWith("doc") || files[i].EndsWith("pdf") ) { continue; } comboFieldName.Items.Add(Path.GetFileName(files[i])); } //comboFieldName.Items.Add("Patient Info.gif"); } }
private void butImport_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Multiselect = false; if (dlg.ShowDialog() != DialogResult.OK) { return; } if (!File.Exists(dlg.FileName)) { MsgBox.Show(this, "File does not exist."); return; } string newName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName)); if (File.Exists(newName)) { MsgBox.Show(this, "A file of that name already exists in SheetImages. Please rename the file before importing."); return; } File.Copy(dlg.FileName, newName); FillCombo(); for (int i = 0; i < comboFieldName.Items.Count; i++) { if (comboFieldName.Items[i].ToString() == Path.GetFileName(newName)) { comboFieldName.SelectedIndex = i; comboFieldName.Text = Path.GetFileName(newName); FillImage(); ShrinkToFit(); } } }
private void FillImage() { textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text); if (File.Exists(textFullPath.Text)) { try { pictureBox.Image = Image.FromFile(textFullPath.Text); } catch { pictureBox.Image = null; textWidth2.Text = ""; textHeight2.Text = ""; MessageBox.Show("Invalid image type."); return; } textWidth2.Text = pictureBox.Image.Width.ToString(); textHeight2.Text = pictureBox.Image.Height.ToString(); } else if (comboFieldName.Text == "Patient Info.gif") { pictureBox.Image = Properties.Resources.Patient_Info; textWidth2.Text = pictureBox.Image.Width.ToString(); textHeight2.Text = pictureBox.Image.Height.ToString(); textFullPath.Text = "Patient Info.gif (internal)"; } else { pictureBox.Image = null; textWidth2.Text = ""; textHeight2.Text = ""; } }
private void FillCombo() { if (PrefC.UsingAtoZfolder) { comboFieldName.Items.Clear(); string[] files = Directory.GetFiles(SheetUtil.GetImagePath()); for (int i = 0; i < files.Length; i++) { comboFieldName.Items.Add(Path.GetFileName(files[i])); } } }
private void butExport_Click(object sender, EventArgs e) { if (gridCustomSheet.GetSelectedIndex() == -1) { MsgBox.Show(this, "Please select a sheet from the list first."); return; } SheetDef sheetdef = SheetDefs.GetSheetDef(_listSheetDefs[gridCustomSheet.GetSelectedIndex()].SheetDefNum); List <SheetFieldDef> listFieldDefImages = sheetdef.SheetFieldDefs .Where(x => x.FieldType == SheetFieldType.Image && x.FieldName != "Patient Info.gif") .ToList(); if (!listFieldDefImages.IsNullOrEmpty()) //Alert them of any images they need to copy if there are any. { string sheetImagesPath = ""; ODException.SwallowAnyException(() => { sheetImagesPath = SheetUtil.GetImagePath(); }); StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine(Lan.g(this, "The following images will need to be manually imported with the same file name when importing this " + "sheet to a new environment.")); strBuilder.AppendLine(); listFieldDefImages.ForEach(x => strBuilder.AppendLine(ODFileUtils.CombinePaths(sheetImagesPath, x.FieldName))); MsgBoxCopyPaste msgBox = new MsgBoxCopyPaste(strBuilder.ToString()); msgBox.ShowDialog(); } XmlSerializer serializer = new XmlSerializer(typeof(SheetDef)); string filename = "SheetDefCustom.xml"; if (ODBuild.IsWeb()) { StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild)) { serializer.Serialize(writer, sheetdef); } ThinfinityUtils.ExportForDownload(filename, strbuild.ToString()); } else { SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.InitialDirectory = PrefC.GetString(PrefName.ExportPath); saveDlg.FileName = filename; if (saveDlg.ShowDialog() != DialogResult.OK) { return; } using (TextWriter writer = new StreamWriter(saveDlg.FileName)) { serializer.Serialize(writer, sheetdef); } } MsgBox.Show(this, "Exported"); }
private void FillImage() { textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text); if (File.Exists(textFullPath.Text)) { pictureBox.Image = Image.FromFile(textFullPath.Text); textWidth2.Text = pictureBox.Image.Width.ToString(); textHeight2.Text = pictureBox.Image.Height.ToString(); } else { pictureBox.Image = null; textWidth2.Text = ""; textHeight2.Text = ""; } }
private void LoadImagesToSheetDef(SheetDef sheetDefCur) { for (int j = 0; j < sheetDefCur.SheetFieldDefs.Count; j++) { try { if (sheetDefCur.SheetFieldDefs[j].FieldType == SheetFieldType.Image) { string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName); Image img = null; if (sheetDefCur.SheetFieldDefs[j].FieldName == "Patient Info.gif") { img = Properties.Resources.Patient_Info; } else if (File.Exists(filePathAndName)) { img = Image.FromFile(filePathAndName); } //sheetDefCur.SheetFieldDefs[j].ImageData=POut.Bitmap(new Bitmap(img),ImageFormat.Png);//Because that's what we did before. Review this later. long fileByteSize = 0; using (MemoryStream ms = new MemoryStream()) { img.Save(ms, img.RawFormat); // done solely to compute the file size of the image fileByteSize = ms.Length; } if (fileByteSize > 2000000) { //for large images greater that ~2MB use jpeg format for compression. Large images in the 4MB + range have difficulty being displayed. It could be an issue with MYSQL or ASP.NET sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), ImageFormat.Jpeg); } else { sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), img.RawFormat); } } else { sheetDefCur.SheetFieldDefs[j].ImageData = ""; // because null is not allowed } } catch (Exception ex) { sheetDefCur.SheetFieldDefs[j].ImageData = ""; MessageBox.Show(ex.Message); } } }
private void FillCombo() { if (PrefC.UsingAtoZfolder) { comboFieldName.Items.Clear(); string[] files = Directory.GetFiles(SheetUtil.GetImagePath()); for (int i = 0; i < files.Length; i++) { //remove some common offending file types (non image files) if (files[i].EndsWith("db") || files[i].EndsWith("doc") || files[i].EndsWith("pdf") ) { continue; } comboFieldName.Items.Add(Path.GetFileName(files[i])); } //comboFieldName.Items.Add("Patient Info.gif"); } }
///<summary>Runs as the final step of loading the form, and also immediately after fields are moved down due to growth.</summary> private void LayoutFields() { panelMain.Controls.Clear(); RichTextBox textbox; //has to be richtextbox due to MS bug that doesn't show cursor. FontStyle style; SheetCheckBox checkbox; //first, draw images--------------------------------------------------------------------------------------- //might change this to only happen once when first loading form: if (pictDraw != null) { if (panelMain.Controls.Contains(pictDraw)) { Controls.Remove(pictDraw); } pictDraw = null; } imgDraw = null; pictDraw = new PictureBox(); if (SheetCur.IsLandscape) { imgDraw = new Bitmap(SheetCur.Height, SheetCur.Width); pictDraw.Width = SheetCur.Height; pictDraw.Height = SheetCur.Width; } else { imgDraw = new Bitmap(SheetCur.Width, SheetCur.Height); pictDraw.Width = SheetCur.Width; pictDraw.Height = SheetCur.Height; } pictDraw.Location = new Point(0, 0); pictDraw.Image = (Image)imgDraw.Clone(); pictDraw.SizeMode = PictureBoxSizeMode.StretchImage; panelMain.Controls.Add(pictDraw); panelMain.SendToBack(); Graphics pictGraphics = Graphics.FromImage(imgDraw); foreach (SheetField field in SheetCur.SheetFields) { if (field.FieldType != SheetFieldType.Image) { continue; } string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName); Image img = null; if (field.FieldName == "Patient Info.gif") { img = Properties.Resources.Patient_Info; } else if (File.Exists(filePathAndName)) { img = Image.FromFile(filePathAndName); } else { continue; } pictGraphics.DrawImage(img, field.XPos, field.YPos, field.Width, field.Height); } pictGraphics.Dispose(); //Set mouse events for the pictDraw pictDraw.MouseDown += new MouseEventHandler(pictDraw_MouseDown); pictDraw.MouseMove += new MouseEventHandler(pictDraw_MouseMove); pictDraw.MouseUp += new MouseEventHandler(pictDraw_MouseUp); //draw drawings, rectangles, and lines----------------------------------------------------------------------- RefreshPanel(); //draw textboxes---------------------------------------------------------------------------------------------- foreach (SheetField field in SheetCur.SheetFields) { if (field.FieldType != SheetFieldType.InputField && field.FieldType != SheetFieldType.OutputText && field.FieldType != SheetFieldType.StaticText) { continue; } textbox = new RichTextBox(); textbox.BorderStyle = BorderStyle.None; textbox.TabStop = false; //Only input fields allow tab stop (set below for input text). //textbox.Multiline=true;//due to MS malfunction at 9pt which cuts off the bottom of the text. if (field.FieldType == SheetFieldType.OutputText || field.FieldType == SheetFieldType.StaticText) { //textbox.BackColor=Color.White; //textbox.BackColor=Color.FromArgb(245,245,200); } else if (field.FieldType == SheetFieldType.InputField) { textbox.BackColor = Color.FromArgb(245, 245, 200); textbox.TabStop = (field.TabOrder == 0?false:true); textbox.TabIndex = field.TabOrder; } textbox.Location = new Point(field.XPos, field.YPos); textbox.Width = field.Width; textbox.ScrollBars = RichTextBoxScrollBars.None; textbox.Text = field.FieldValue; style = FontStyle.Regular; if (field.FontIsBold) { style = FontStyle.Bold; } textbox.Font = new Font(field.FontName, field.FontSize, style); if (field.Height < textbox.Font.Height + 2) { textbox.Multiline = false; //textbox.AcceptsReturn=false; } else { textbox.Multiline = true; //textbox.AcceptsReturn=true; } textbox.Height = field.Height; //textbox.ScrollBars=RichTextBoxScrollBars.None; textbox.Tag = field; textbox.TextChanged += new EventHandler(text_TextChanged); panelMain.Controls.Add(textbox); textbox.BringToFront(); } //draw checkboxes---------------------------------------------------------------------------------------------- foreach (SheetField field in SheetCur.SheetFields) { if (field.FieldType != SheetFieldType.CheckBox) { continue; } checkbox = new SheetCheckBox(); if (field.FieldValue == "X") { checkbox.IsChecked = true; } checkbox.Location = new Point(field.XPos, field.YPos); checkbox.Width = field.Width; checkbox.Height = field.Height; checkbox.Tag = field; checkbox.Click += new EventHandler(text_TextChanged); checkbox.TabStop = (field.TabOrder == 0?false:true); checkbox.TabIndex = field.TabOrder; panelMain.Controls.Add(checkbox); checkbox.BringToFront(); } //draw signature boxes---------------------------------------------------------------------------------------------- foreach (SheetField field in SheetCur.SheetFields) { if (field.FieldType != SheetFieldType.SigBox) { continue; } OpenDental.UI.SignatureBoxWrapper sigBox = new OpenDental.UI.SignatureBoxWrapper(); sigBox.Location = new Point(field.XPos, field.YPos); sigBox.Width = field.Width; sigBox.Height = field.Height; if (field.FieldValue.Length > 0) //a signature is present { bool sigIsTopaz = false; if (field.FieldValue[0] == '1') { sigIsTopaz = true; } string signature = ""; if (field.FieldValue.Length > 1) { signature = field.FieldValue.Substring(1); } string keyData = Sheets.GetSignatureKey(SheetCur); sigBox.FillSignature(sigIsTopaz, keyData, signature); } sigBox.Tag = field; sigBox.TabStop = (field.TabOrder == 0?false:true); sigBox.TabIndex = field.TabOrder; panelMain.Controls.Add(sigBox); sigBox.BringToFront(); } }
private void butImport_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Multiselect = false; if (dlg.ShowDialog() != DialogResult.OK) { return; } if (!File.Exists(dlg.FileName)) { MsgBox.Show(this, "File does not exist."); return; } if (!ImageHelper.HasImageExtension(dlg.FileName)) { MsgBox.Show(this, "Only allowed to import an image."); return; } string newName = dlg.FileName; if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ) { newName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName)); if (File.Exists(newName)) { MsgBox.Show(this, "A file of that name already exists in SheetImages. Please rename the file before importing."); return; } File.Copy(dlg.FileName, newName); } else if (CloudStorage.IsCloudStorage) { if (CloudStorage.FileExists(ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName)))) { MsgBox.Show(this, "A file of that name already exists in SheetImages. Please rename the file before importing."); return; } FormProgress FormP = new FormProgress(); FormP.DisplayText = Lan.g(CloudStorage.LanThis, "Uploading..."); FormP.NumberFormat = "F"; FormP.NumberMultiplication = 1; FormP.MaxVal = 100; //Doesn't matter what this value is as long as it is greater than 0 FormP.TickMS = 1000; OpenDentalCloud.Core.TaskStateUpload state = CloudStorage.UploadAsync(SheetUtil.GetImagePath(), Path.GetFileName(dlg.FileName) , File.ReadAllBytes(dlg.FileName) , new OpenDentalCloud.ProgressHandler(FormP.OnProgress)); if (FormP.ShowDialog() == DialogResult.Cancel) { state.DoCancel = true; return; } newName = Path.GetFileName(dlg.FileName); //It would be nice to save the image somewhere so that we don't have to download it again. } FillCombo(); for (int i = 0; i < comboFieldName.Items.Count; i++) { if (comboFieldName.Items[i].ToString() == Path.GetFileName(newName)) { comboFieldName.SelectedIndex = i; comboFieldName.Text = Path.GetFileName(newName); FillImage(); ShrinkToFit(); } } }
private void FillImage() { if (comboFieldName.Text == "") { return; } if (CloudStorage.IsCloudStorage) { textFullPath.Text = CloudStorage.PathTidy(ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text)); } else { textFullPath.Text = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), comboFieldName.Text); } if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ && File.Exists(textFullPath.Text)) { GC.Collect(); try { pictureBox.Image = Image.FromFile(textFullPath.Text); } catch { pictureBox.Image = null; MsgBox.Show(this, "Invalid image type."); } } else if (comboFieldName.Text == "Patient Info.gif") //Interal image { pictureBox.Image = OpenDentBusiness.Properties.Resources.Patient_Info; textFullPath.Text = "Patient Info.gif (internal)"; } else if (CloudStorage.IsCloudStorage) { if (comboFieldName.Text == SheetFieldDefCur.FieldName && SheetFieldDefCur.ImageField != null) { pictureBox.Image = SheetFieldDefCur.ImageField; } else { FormProgress FormP = new FormProgress(); FormP.DisplayText = Lan.g(CloudStorage.LanThis, "Downloading..."); FormP.NumberFormat = "F"; FormP.NumberMultiplication = 1; FormP.MaxVal = 100; //Doesn't matter what this value is as long as it is greater than 0 FormP.TickMS = 1000; OpenDentalCloud.Core.TaskStateDownload state = CloudStorage.DownloadAsync(SheetUtil.GetImagePath(), comboFieldName.Text, new OpenDentalCloud.ProgressHandler(FormP.OnProgress)); if (FormP.ShowDialog() == DialogResult.Cancel) { state.DoCancel = true; return; } if (state == null || state.FileContent == null) { pictureBox.Image = null; } else { using (MemoryStream stream = new MemoryStream(state.FileContent)) { pictureBox.Image = new Bitmap(Image.FromStream(stream)); } } } } else { pictureBox.Image = null; } if (pictureBox.Image == null) { textWidth2.Text = ""; textHeight2.Text = ""; } else { textWidth2.Text = pictureBox.Image.Width.ToString(); textHeight2.Text = pictureBox.Image.Height.ToString(); } }
public static void CreatePdfPage(Sheet sheet, PdfPage page) { page.Width = p(sheet.Width); //XUnit.FromInch((double)sheet.Width/100); //new XUnit((double)sheet.Width/100,XGraphicsUnit.Inch); page.Height = p(sheet.Height); //new XUnit((double)sheet.Height/100,XGraphicsUnit.Inch); if (sheet.IsLandscape) { page.Orientation = PageOrientation.Landscape; } XGraphics g = XGraphics.FromPdfPage(page); g.SmoothingMode = XSmoothingMode.HighQuality; //g.PageUnit=XGraphicsUnit. //wish they had pixel //XTextFormatter tf = new XTextFormatter(g);//needed for text wrap //tf.Alignment=XParagraphAlignment.Left; //pd.DefaultPageSettings.Landscape= //already done?:SheetUtil.CalculateHeights(sheet,g);//this is here because of easy access to g. XFont xfont; XFontStyle xfontstyle; //first, draw images-------------------------------------------------------------------------------------- foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.Image) { continue; } string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName); Bitmap bitmapOriginal = null; if (field.FieldName == "Patient Info.gif") { bitmapOriginal = Properties.Resources.Patient_Info; } else if (File.Exists(filePathAndName)) { bitmapOriginal = new Bitmap(filePathAndName); } else { continue; } Bitmap bitmapResampled = (Bitmap)bitmapOriginal.Clone(); if (bitmapOriginal.HorizontalResolution != 96 || bitmapOriginal.VerticalResolution != 96) //to avoid slowdown for other pdfs //The scaling on the XGraphics.DrawImage() function causes unreadable output unless the image is in 96 DPI native format. //We use GDI here first to convert the image to the correct size and DPI, then pass the second image to XGraphics.DrawImage(). { bitmapResampled.Dispose(); bitmapResampled = null; bitmapResampled = new Bitmap(field.Width, field.Height); Graphics gr = Graphics.FromImage(bitmapResampled); gr.DrawImage(bitmapOriginal, 0, 0, field.Width, field.Height); gr.Dispose(); } g.DrawImage(bitmapResampled, p(field.XPos), p(field.YPos), p(field.Width), p(field.Height)); bitmapResampled.Dispose(); bitmapResampled = null; bitmapOriginal.Dispose(); bitmapOriginal = null; } //then, drawings-------------------------------------------------------------------------------------------- XPen pen = new XPen(XColors.Black, p(2)); string[] pointStr; List <Point> points; Point point; string[] xy; foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.Drawing) { continue; } pointStr = field.FieldValue.Split(';'); points = new List <Point>(); for (int j = 0; j < pointStr.Length; j++) { xy = pointStr[j].Split(','); if (xy.Length == 2) { point = new Point(PIn.Int(xy[0]), PIn.Int(xy[1])); points.Add(point); } } for (int i = 1; i < points.Count; i++) { g.DrawLine(pen, p(points[i - 1].X), p(points[i - 1].Y), p(points[i].X), p(points[i].Y)); } } //then, rectangles and lines---------------------------------------------------------------------------------- XPen pen2 = new XPen(XColors.Black, p(1)); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType == SheetFieldType.Rectangle) { g.DrawRectangle(pen2, p(field.XPos), p(field.YPos), p(field.Width), p(field.Height)); } if (field.FieldType == SheetFieldType.Line) { g.DrawLine(pen2, p(field.XPos), p(field.YPos), p(field.XPos + field.Width), p(field.YPos + field.Height)); } } //then, draw text-------------------------------------------------------------------------------------------- Bitmap doubleBuffer = new Bitmap(sheet.Width, sheet.Height); Graphics gfx = Graphics.FromImage(doubleBuffer); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.InputField && field.FieldType != SheetFieldType.OutputText && field.FieldType != SheetFieldType.StaticText) { continue; } xfontstyle = XFontStyle.Regular; if (field.FontIsBold) { xfontstyle = XFontStyle.Bold; } xfont = new XFont(field.FontName, field.FontSize, xfontstyle); //xfont=new XFont(field.FontName,field.FontSize,xfontstyle); //Rectangle rect=new Rectangle((int)p(field.XPos),(int)p(field.YPos),(int)p(field.Width),(int)p(field.Height)); XRect xrect = new XRect(p(field.XPos), p(field.YPos), p(field.Width), p(field.Height)); //XStringFormat format=new XStringFormat(); //tf.DrawString(field.FieldValue,font,XBrushes.Black,xrect,XStringFormats.TopLeft); GraphicsHelper.DrawStringX(g, gfx, 1d / p(1), field.FieldValue, xfont, XBrushes.Black, xrect); } gfx.Dispose(); //then, checkboxes---------------------------------------------------------------------------------- XPen pen3 = new XPen(XColors.Black, p(1.6f)); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.CheckBox) { continue; } if (field.FieldValue == "X") { g.DrawLine(pen3, p(field.XPos), p(field.YPos), p(field.XPos + field.Width), p(field.YPos + field.Height)); g.DrawLine(pen3, p(field.XPos + field.Width), p(field.YPos), p(field.XPos), p(field.YPos + field.Height)); } } //then signature boxes---------------------------------------------------------------------- foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.SigBox) { continue; } SignatureBoxWrapper wrapper = new SignatureBoxWrapper(); wrapper.Width = field.Width; wrapper.Height = field.Height; if (field.FieldValue.Length > 0) //a signature is present { bool sigIsTopaz = false; if (field.FieldValue[0] == '1') { sigIsTopaz = true; } string signature = ""; if (field.FieldValue.Length > 1) { signature = field.FieldValue.Substring(1); } string keyData = Sheets.GetSignatureKey(sheet); wrapper.FillSignature(sigIsTopaz, keyData, signature); } XImage sigBitmap = XImage.FromGdiPlusImage(wrapper.GetSigImage()); g.DrawImage(sigBitmap, p(field.XPos), p(field.YPos), p(field.Width - 2), p(field.Height - 2)); } }
private static void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.HighQuality; Sheet sheet = SheetList[sheetsPrinted]; SheetUtil.CalculateHeights(sheet, g); //this is here because of easy access to g. Font font; FontStyle fontstyle; //first, draw images------------------------------------------------------------------------------------ foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.Image) { continue; } string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), field.FieldName); Image img = null; //js consider switching this from an image to a bitmap if (field.FieldName == "Patient Info.gif") { img = Properties.Resources.Patient_Info; } else if (File.Exists(filePathAndName)) { img = Image.FromFile(filePathAndName); } else { continue; } g.DrawImage(img, field.XPos, field.YPos, field.Width, field.Height); img.Dispose(); img = null; } //then, drawings-------------------------------------------------------------------------------------------- Pen pen = new Pen(Brushes.Black, 2f); string[] pointStr; List <Point> points; Point point; string[] xy; foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.Drawing) { continue; } pointStr = field.FieldValue.Split(';'); points = new List <Point>(); for (int p = 0; p < pointStr.Length; p++) { xy = pointStr[p].Split(','); if (xy.Length == 2) { point = new Point(PIn.Int(xy[0]), PIn.Int(xy[1])); points.Add(point); } } for (int i = 1; i < points.Count; i++) { g.DrawLine(pen, points[i - 1].X, points[i - 1].Y, points[i].X, points[i].Y); } } //then, rectangles and lines---------------------------------------------------------------------------------- Pen pen2 = new Pen(Brushes.Black, 1f); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType == SheetFieldType.Rectangle) { g.DrawRectangle(pen2, field.XPos, field.YPos, field.Width, field.Height); } if (field.FieldType == SheetFieldType.Line) { g.DrawLine(pen2, field.XPos, field.YPos, field.XPos + field.Width, field.YPos + field.Height); } } //then, draw text----------------------------------------------------------------------------------------------- Bitmap doubleBuffer = new Bitmap(sheet.Width, sheet.Height); Graphics gfx = Graphics.FromImage(doubleBuffer); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.InputField && field.FieldType != SheetFieldType.OutputText && field.FieldType != SheetFieldType.StaticText) { continue; } fontstyle = FontStyle.Regular; if (field.FontIsBold) { fontstyle = FontStyle.Bold; } font = new Font(field.FontName, field.FontSize, fontstyle); Plugins.HookAddCode(null, "SheetPrinting.pd_PrintPage_drawFieldLoop", field); GraphicsHelper.DrawString(g, gfx, field.FieldValue, font, Brushes.Black, field.Bounds); //g.DrawString(field.FieldValue,font,Brushes.Black,field.BoundsF); } gfx.Dispose(); //then, checkboxes---------------------------------------------------------------------------------- Pen pen3 = new Pen(Brushes.Black, 1.6f); foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.CheckBox) { continue; } if (field.FieldValue == "X") { g.DrawLine(pen3, field.XPos, field.YPos, field.XPos + field.Width, field.YPos + field.Height); g.DrawLine(pen3, field.XPos + field.Width, field.YPos, field.XPos, field.YPos + field.Height); } } //then signature boxes---------------------------------------------------------------------- foreach (SheetField field in sheet.SheetFields) { if (field.FieldType != SheetFieldType.SigBox) { continue; } SignatureBoxWrapper wrapper = new SignatureBoxWrapper(); wrapper.Width = field.Width; wrapper.Height = field.Height; if (field.FieldValue.Length > 0) //a signature is present { bool sigIsTopaz = false; if (field.FieldValue[0] == '1') { sigIsTopaz = true; } string signature = ""; if (field.FieldValue.Length > 1) { signature = field.FieldValue.Substring(1); } string keyData = Sheets.GetSignatureKey(sheet); wrapper.FillSignature(sigIsTopaz, keyData, signature); } Bitmap sigBitmap = wrapper.GetSigImage(); g.DrawImage(sigBitmap, field.XPos, field.YPos, field.Width - 2, field.Height - 2); } g.Dispose(); //no logic yet for multiple pages on one sheet. sheetsPrinted++; //heightsCalculated=false; if (sheetsPrinted < SheetList.Count) { e.HasMorePages = true; } else { e.HasMorePages = false; sheetsPrinted = 0; } }
public static void LoadImagesToSheetDef(SheetDef sheetDefCur) { for (int j = 0; j < sheetDefCur.SheetFieldDefs.Count; j++) { try { if (sheetDefCur.SheetFieldDefs[j].FieldType == SheetFieldType.Image) { string filePathAndName = ODFileUtils.CombinePaths(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName); Image img = null; ImageFormat imgFormat = null; if (sheetDefCur.SheetFieldDefs[j].ImageField != null) //The image has already been downloaded. { img = new Bitmap(sheetDefCur.SheetFieldDefs[j].ImageField); imgFormat = ImageFormat.Bmp; } else if (sheetDefCur.SheetFieldDefs[j].FieldName == "Patient Info.gif") { img = OpenDentBusiness.Properties.Resources.Patient_Info; imgFormat = img.RawFormat; } else if (PrefC.AtoZfolderUsed == DataStorageType.LocalAtoZ && File.Exists(filePathAndName)) { img = Image.FromFile(filePathAndName); imgFormat = img.RawFormat; } else if (CloudStorage.IsCloudStorage) { OpenDentalCloud.Core.TaskStateDownload state = CloudStorage.Download(SheetUtil.GetImagePath(), sheetDefCur.SheetFieldDefs[j].FieldName); if (state == null || state.FileContent == null) { throw new Exception(Lan.g(CloudStorage.LanThis, "Unable to download image.")); } else { using (MemoryStream stream = new MemoryStream(state.FileContent)) { img = new Bitmap(Image.FromStream(stream)); } imgFormat = ImageFormat.Bmp; } } //sheetDefCur.SheetFieldDefs[j].ImageData=POut.Bitmap(new Bitmap(img),ImageFormat.Png);//Because that's what we did before. Review this later. long fileByteSize = 0; using (MemoryStream ms = new MemoryStream()) { img.Save(ms, imgFormat); // done solely to compute the file size of the image fileByteSize = ms.Length; } if (fileByteSize > 2000000) { //for large images greater that ~2MB use jpeg format for compression. Large images in the 4MB + range have difficulty being displayed. It could be an issue with MYSQL or ASP.NET sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), ImageFormat.Jpeg); } else { sheetDefCur.SheetFieldDefs[j].ImageData = POut.Bitmap(new Bitmap(img), imgFormat); } } else { sheetDefCur.SheetFieldDefs[j].ImageData = ""; // because null is not allowed } } catch (Exception ex) { sheetDefCur.SheetFieldDefs[j].ImageData = ""; MessageBox.Show(ex.Message); } } }