/// <summary> /// Renderiza um rótulo de número de página no Bloco. /// </summary> /// <param name="p_object">Objeto a ser renderizado.</param> /// <param name="p_posx">Posição X.</param> /// <param name="p_posy">Posição Y.</param> /// <param name="p_rightmargin">Margem direita.</param> /// <param name="p_font">Fonte.</param> /// <param name="p_pdf">Objeto PDF.</param> /// <param name="p_page">Página onde será renderizado.</param> private void RenderPageNumber(Spartacus.Reporting.Object p_object, double p_posx, double p_posy, double p_rightmargin, Spartacus.Reporting.Font p_font, PDFjet.NET.PDF p_pdf, PDFjet.NET.Page p_page) { PDFjet.NET.TextLine v_text; v_text = new PDFjet.NET.TextLine(p_font.GetFont(p_pdf)); v_text.SetText(p_object.v_value); switch (p_object.v_align) { case Spartacus.Reporting.FieldAlignment.LEFT: v_text.SetPosition(p_posx + p_object.v_posx, p_posy + p_object.v_posy); break; case Spartacus.Reporting.FieldAlignment.RIGHT: v_text.SetPosition(p_page.GetWidth() - p_rightmargin - v_text.GetWidth(), p_posy + p_object.v_posy); break; case Spartacus.Reporting.FieldAlignment.CENTER: v_text.SetPosition(p_posx + ((p_page.GetWidth() - p_rightmargin - p_posx) / 2) - (v_text.GetWidth() / 2), p_posy + p_object.v_posy); break; default: break; } v_text.DrawOn(p_page); p_object.v_pdfobject = v_text; }
/// <summary> /// Lê objeto do cabeçalho do relatório. /// </summary> /// <param name="p_reader">Objeto XML.</param> private void ReadHeaderObject(System.Xml.XmlReader p_reader) { Spartacus.Reporting.Object v_object; System.Xml.XmlReader v_item; v_object = new Spartacus.Reporting.Object(); while (p_reader.Read()) { if (p_reader.IsStartElement()) { switch (p_reader.Name) { case "type": switch (p_reader.ReadString()) { case "IMAGE": v_object.v_type = Spartacus.Reporting.ObjectType.IMAGE; break; case "TEXT": v_object.v_type = Spartacus.Reporting.ObjectType.TEXT; break; case "PAGENUMBER": v_object.v_type = Spartacus.Reporting.ObjectType.PAGENUMBER; break; default: break; } break; case "column": v_object.v_column = p_reader.ReadString(); break; case "posx": v_object.SetPosX(p_reader.ReadString()); break; case "posy": v_object.SetPosY(p_reader.ReadString()); break; case "align": switch (p_reader.ReadString()) { case "LEFT": v_object.v_align = Spartacus.Reporting.FieldAlignment.LEFT; break; case "RIGHT": v_object.v_align = Spartacus.Reporting.FieldAlignment.RIGHT; break; case "CENTER": v_object.v_align = Spartacus.Reporting.FieldAlignment.CENTER; break; default: break; } break; case "font": v_object.v_font = new Spartacus.Reporting.Font(); v_item = p_reader.ReadSubtree(); this.ReadFont(v_object.v_font, v_item); v_item.Close(); break; default: break; } } } this.v_header.v_objects.Add(v_object); }
/// <summary> /// Lê objeto do rodapé do relatório. /// </summary> /// <param name="p_reader">Objeto XML.</param> private void ReadFooterObject(System.Xml.XmlReader p_reader) { Spartacus.Reporting.Object v_object; System.Xml.XmlReader v_item; v_object = new Spartacus.Reporting.Object(); while (p_reader.Read()) { if (p_reader.IsStartElement()) { switch (p_reader.Name) { case "type": switch (p_reader.ReadString()) { case "IMAGE": v_object.v_type = Spartacus.Reporting.ObjectType.IMAGE; break; case "TEXT": v_object.v_type = Spartacus.Reporting.ObjectType.TEXT; break; case "PAGENUMBER": v_object.v_type = Spartacus.Reporting.ObjectType.PAGENUMBER; break; default: break; } break; case "column": v_object.v_column = p_reader.ReadString(); break; case "posx": v_object.SetPosX(p_reader.ReadString()); break; case "posy": v_object.SetPosY(p_reader.ReadString()); break; case "align": switch (p_reader.ReadString()) { case "LEFT": v_object.v_align = Spartacus.Reporting.FieldAlignment.LEFT; break; case "RIGHT": v_object.v_align = Spartacus.Reporting.FieldAlignment.RIGHT; break; case "CENTER": v_object.v_align = Spartacus.Reporting.FieldAlignment.CENTER; break; default: break; } break; case "font": v_object.v_font = new Spartacus.Reporting.Font(); v_item = p_reader.ReadSubtree(); this.ReadFont(v_object.v_font, v_item); v_item.Close(); break; default: break; } } } this.v_footer.v_objects.Add(v_object); }
/// <summary> /// Renderiza uma imagem no Bloco. /// Essa imagem precisa vir de um arquivo em disco. /// </summary> /// <param name="p_object">Objeto a ser renderizado.</param> /// <param name="p_posx">Posição X.</param> /// <param name="p_posy">Posição Y.</param> /// <param name="p_rightmargin">Margem direita.</param> /// <param name="p_pdf">Objeto PDF.</param> /// <param name="p_page">Página onde o objeto será renderizado.</param> private void RenderImage(Spartacus.Reporting.Object p_object, double p_posx, double p_posy, double p_rightmargin, PDFjet.NET.PDF p_pdf, PDFjet.NET.Page p_page) { PDFjet.NET.Image v_image; System.IO.FileInfo v_info; char[] v_ch; string[] v_temp; Spartacus.Utils.Cryptor v_cryptor; string v_path; if (p_object.v_pdfobject == null) { v_ch = new char[1]; v_ch[0] = '.'; v_cryptor = new Spartacus.Utils.Cryptor("spartacus"); try { v_path = v_cryptor.Decrypt(p_object.v_value); } catch (System.Exception) { v_path = p_object.v_value; } v_info = new System.IO.FileInfo(v_path); if (v_info.Exists) { v_temp = v_path.Split(v_ch); switch (v_temp[v_temp.Length - 1].ToUpper()) { case "BMP": v_image = new PDFjet.NET.Image(p_pdf, new System.IO.FileStream(v_path, System.IO.FileMode.Open, System.IO.FileAccess.Read), PDFjet.NET.ImageType.BMP); break; case "JPG": v_image = new PDFjet.NET.Image(p_pdf, new System.IO.FileStream(v_path, System.IO.FileMode.Open, System.IO.FileAccess.Read), PDFjet.NET.ImageType.JPG); break; case "JPEG": v_image = new PDFjet.NET.Image(p_pdf, new System.IO.FileStream(v_path, System.IO.FileMode.Open, System.IO.FileAccess.Read), PDFjet.NET.ImageType.JPG); break; case "PNG": v_image = new PDFjet.NET.Image(p_pdf, new System.IO.FileStream(v_path, System.IO.FileMode.Open, System.IO.FileAccess.Read), PDFjet.NET.ImageType.PNG); break; case "JET": v_image = new PDFjet.NET.Image(p_pdf, new System.IO.FileStream(v_path, System.IO.FileMode.Open, System.IO.FileAccess.Read), PDFjet.NET.ImageType.JET); break; default: v_image = null; break; } if (v_image != null) { switch (p_object.v_align) { case Spartacus.Reporting.FieldAlignment.LEFT: v_image.SetPosition(p_posx + p_object.v_posx, p_posy + p_object.v_posy); break; case Spartacus.Reporting.FieldAlignment.RIGHT: v_image.SetPosition(p_page.GetWidth() - p_rightmargin - v_image.GetWidth(), p_posy + p_object.v_posy); break; case Spartacus.Reporting.FieldAlignment.CENTER: v_image.SetPosition(p_posx + ((p_page.GetWidth() - p_rightmargin - p_posx) / 2) - (v_image.GetWidth() / 2), p_posy + p_object.v_posy); break; default: break; } v_image.DrawOn(p_page); p_object.v_pdfobject = v_image; } } } else { ((PDFjet.NET.Image)p_object.v_pdfobject).DrawOn(p_page); } }