public void RunPages(Pages pgs) // this does all the work { foreach (Page p in pgs) { //Create a Page Dictionary representing a visible page page = new PdfPage(anchor); content = new PdfContent(anchor); PdfPageSize pSize = new PdfPageSize((int)r.ReportDefinition.PageWidth.ToPoints(), (int)r.ReportDefinition.PageHeight.ToPoints()); _pSize = pSize; page.CreatePage(pageTree.objectNum, pSize); pageTree.AddPage(page.objectNum); //Create object that presents the elements in the page elements = new PdfElements(page, pSize); ProcessPage(pgs, p); // after a page content.SetStream(elements.EndElements()); page.AddResource(fonts, content.objectNum); page.AddResource(patterns, content.objectNum); //get the pattern colorspace... PatternObj po = new PatternObj(anchor); page.AddResource(po, content.objectNum); int size = 0; tw.Write(page.GetPageDict(filesize, out size), 0, size); filesize += size; tw.Write(content.GetContentDict(filesize, out size), 0, size); filesize += size; tw.Write(po.GetPatternObj(filesize, out size), 0, size); filesize += size; } return; }
/// <summary> /// Create The Pdf page /// </summary> internal void CreatePage(int refParent, PdfPageSize pSize) { pageSize = string.Format("[0 0 {0} {1}]", pSize.xWidth, pSize.yHeight); page = string.Format("\r\n{0} 0 obj<</Type /Page/Parent {1} 0 R/Rotate 0/MediaBox {2}/CropBox {2}", this.objectNum, refParent, pageSize); }
internal PdfElements(PdfPage pg, PdfPageSize pageSize) { p = pg; pSize = pageSize; elements = new StringBuilder(); }