/// <summary> /// Add Pattern Resources to the pdf page /// </summary> internal void AddResource(PdfPattern patterns, int contentRef) { foreach (PdfPatternEntry pat in patterns.Patterns.Values) { patternRef += string.Format("/{0} {1} 0 R", pat.pattern, pat.objectNum); } if (contentRef > 0) { contents = string.Format("/Contents {0} 0 R", contentRef); } }
public void Start() { // Create the anchor for all pdf objects CompressionConfig cc = RdlEngineConfig.GetCompression(); anchor = new PdfAnchor(cc != null); //Create a PdfCatalog string lang; if (r.ReportDefinition.Language != null) { lang = r.ReportDefinition.Language.EvaluateString(this.r, null); } else { lang = null; } catalog = new PdfCatalog(anchor, lang); //Create a Page Tree Dictionary pageTree = new PdfPageTree(anchor); //Create a Font Dictionary fonts = new PdfFonts(anchor); //Create a Pattern Dictionary patterns = new PdfPattern(anchor); //Create an Image Dictionary images = new PdfImages(anchor); //Create an Outline Dictionary outline = new PdfOutline(anchor); //Create the info Dictionary info = new PdfInfo(anchor); //Set the info Dictionary. info.SetInfo(r.Name, r.Author, r.Description, ""); // title, author, subject, company //Create a utility object pdfUtility = new PdfUtility(anchor); //write out the header int size = 0; tw.Write(pdfUtility.GetHeader("1.5", out size), 0, size); // filesize = size; }
/// <summary> /// Page Polygon /// </summary> /// <param name="pts"></param> /// <param name="si"></param> /// <param name="url"></param> /// <param name="patterns"></param> internal void AddPolygon(PointF[] pts, StyleInfo si, string url, PdfPattern patterns) { if (si.BackgroundColor.IsEmpty) { return; // nothing to do } // Get the fill color - could be a gradient or pattern etc... Color c = si.BackgroundColor; double red = c.R; double green = c.G; double blue = c.B; red = Math.Round((red / 255), 3); green = Math.Round((green / 255), 3); blue = Math.Round((blue / 255), 3); //Fill the polygon with the background color first... elements.AppendFormat(NumberFormatInfo.InvariantInfo, "\r\nq\t{0} {1} {2} RG\t{0} {1} {2} rg\t", red, green, blue); // color AddPoints(elements, pts); //if we have a pattern paint it now... if (si.PatternType != patternTypeEnum.None) { string p = patterns.GetPdfPattern(si.PatternType.ToString()); c = si.Color; red = Math.Round((c.R / 255.0), 3); green = Math.Round((c.G / 255.0), 3); blue = Math.Round((c.B / 255.0), 3); elements.AppendFormat("\r\nq"); elements.AppendFormat("\r\n /CS1 cs"); elements.AppendFormat("\r\n {0} {1} {2} /{3} scn", red, green, blue, p); elements.AppendFormat("\r\n {0} {1} {2} RG", red, green, blue); AddPoints(elements, pts); } elements.AppendFormat("\tQ"); }
//25072008 GJL Draw a pie internal void AddPie(float x, float y, float height, float width, StyleInfo si, string url, PdfPattern patterns, string tooltip) { // Draw background rectangle if needed if (!si.BackgroundColor.IsEmpty && height > 0 && width > 0) { // background color, height and width are specified AddFillRect(x, y, width, height, si, patterns); } AddBorder(si, x, y, height, width); // add any required border //Do something... if (url != null) { p.AddHyperlink(x, pSize.yHeight - y, height, width, url); } if (!string.IsNullOrEmpty(tooltip)) { p.AddToolTip(x, pSize.yHeight - y, height, width, tooltip); } return; }
internal void AddFillRect(float x, float y, float width, float height, StyleInfo si, PdfPattern patterns) { // Get the fill color - could be a gradient or pattern etc... Color c = si.BackgroundColor; double red = c.R; double green = c.G; double blue = c.B; red = Math.Round((red / 255), 3); green = Math.Round((green / 255), 3); blue = Math.Round((blue / 255), 3); //Fill the rectangle with the background color first... elements.AppendFormat(NumberFormatInfo.InvariantInfo, "\r\nq\t{0} {1} {2} RG\t{0} {1} {2} rg\t{3} {4} {5} {6} re\tf\tQ\t", red, green, blue, // color x, pSize.yHeight - y - height, width, height); // positioning //if we have a pattern paint it now... if (si.PatternType != patternTypeEnum.None) { string p = patterns.GetPdfPattern(si.PatternType.ToString()); c = si.Color; red = Math.Round((c.R / 255.0), 3); green = Math.Round((c.G / 255.0), 3); blue = Math.Round((c.B / 255.0), 3); elements.AppendFormat("\r\nq"); elements.AppendFormat("\r\n /CS1 cs"); elements.AppendFormat("\r\n {0} {1} {2} /{3} scn", red, green, blue, p); elements.AppendFormat("\r\n {0} {1} {2} RG", red, green, blue); elements.AppendFormat("\r\n {0} {1} {2} {3} re\tf", x, pSize.yHeight - y - height, width, height); elements.AppendFormat("\tQ"); } }