/// <summary> /// Draws the document header /// </summary> public void DrawHeader() { RowGroup rowGroup = PageDefinition.Header.RowGroup; foreach (Row row in rowGroup.Rows) { PdfDrawer.NextRow(row.Height, DocumentGroup.Header); DrawRow(row.DrawElements, headerData); } }
protected override int ExecuteArguments(IEnumerable <IArgument> args) { var srcPath = args.Get <Src1Argument>(); var srcType = args.Get <SrcType1Argument>(); var src2Path = args.Get <Src2Argument>(); var src2Type = args.Get <SrcType2Argument>(); var destPath = args.Get <DestArgument>(); var dpi = args.Get <DpiArgument>(); var width = args.Get <LineWidthArgument>(); var margin = args.Get <MarginArgument>(); var parPage = args.Get <ParPageArgument>(); var pdfContext = new PdfContext { FileName = Path.GetFileName(destPath.Argument), OutputPath = Path.GetDirectoryName(destPath.Argument), Dpi = dpi.GetArgumentAsFloat(), IsVisibleSeparateLine = args.Contains <VisibleLineArgument>(), }; var labelContext = new LabelContext { OutlineWidth = width.GetArgumentAsInt(), MarginRatio = margin.GetArgumentAsFloat(), ParPage = parPage.GetArgumentAsInt(), }; try { var toAddressList = CsvReader.Read(CsvResolver.ResolveType(srcType), srcPath.Argument) .Cast <IAddress>(); var fromAddress = CsvReader.Read(CsvResolver.ResolveType(src2Type), src2Path.Argument) .Cast <IAddress>().First(); var labelContents = this.BuildLabelContents(toAddressList, fromAddress); var drawer = new PdfDrawer(pdfContext, labelContext); drawer.Draw(labelContents); this._messenger.Send("PDF の作成を終了しました"); return(0); } catch (Exception ex) { this._messenger.Send("PDF の作成でエラーが発生しました"); this._messenger.Send(ex.Message); return(1); } }
/// <summary> /// Draw rowGroup to the Pdf, when goto nextPage, repeat the header! /// 201306060 :: mellorasinxelas to write absolute groups /// </summary> /// <param name="rowGroup"></param> /// <param name="data"></param> /// <param name="dGroup"></param> public void DrawRowGroup(RowGroup rowGroup, System.Collections.IDictionary data, DocumentGroup dGroup) { bool absolute = false; if (rowGroup is Moon.PDFTemplate.FooterGroup) { absolute = ((Moon.PDFTemplate.FooterGroup)rowGroup).Absolute; } float oldY = -1; bool ignoreAddRow = false; if (absolute) { oldY = PdfDrawer.CurrentY(); PdfDrawer.SetY(PageDefinition.Margin_bottom + ((rowGroup.Y != -1.0F) ? rowGroup.Y : rowGroup.Height)); //20130610 :: Use sY if is stored, otherwise uses Height. ignoreAddRow = true; //position has been stored. } foreach (Row row in rowGroup.Rows) { if (!absolute) { if (PdfDrawer.isNoMoreY(row.Height, dGroup)) { NextPage(); DrawHeader(); } } if (ignoreAddRow) { ignoreAddRow = false; } else { PdfDrawer.NextRow(row.Height, dGroup); } DrawRow(row.DrawElements, data); } //returns to old Y value. if (absolute) { PdfDrawer.SetY(oldY); } }
//-- //-------------------------------------------------------------------- // _draw to pdf /// <summary> /// draw a row of drawElement to the pdf /// </summary> /// <param name="drawElements"></param> /// <param name="data"></param> public void DrawRow(List <DrawElement> drawElements, IDictionary data) { foreach (DrawElement drawElement in drawElements) { #if DEBUG //Console.WriteLine(drawElement.GetType()); #endif // skip PageNumber element if (drawElement is PageNumber) { ((PageNumber)drawElement).SetY(PdfDrawer.CurrentY()); continue; } drawElement.Draw(PdfDrawer, data); } }
/// <summary> /// implement for PDFTemplate /// this will call when initialize PDFTemplate object! /// </summary> protected override void SetPageDefWidthHeight(Orientation orientation) { // this will call from PDFTemplate._buildPageDef() if (pageSize == null) { pageSize = PDFDrawItextSharpHelper.PageSize(Helper.GetAttributeValue("pagesize", PageDefinition.PageDefAttrs, "A4")); } if (orientation != CurrentOrientation) { this.CurrentOrientation = orientation; pageSize = pageSize.Rotate(); PdfDrawer?.RotatePage(); } PageDefinition.Width = pageSize.Width; PageDefinition.Height = pageSize.Height; }
/// <summary> /// Create a next document page with param orientation. /// </summary> public void NextPage(Orientation orientation) { //201306060 :: jaimelopez :: absolute footer if (PageDefinition.Footer.RowGroup is FooterGroup && ((FooterGroup)PageDefinition.Footer.RowGroup).Absolute) { //process footer in each page... DrawRowGroup(PageDefinition.Footer.RowGroup, footerData, DocumentGroup.Footer); } SetPageDefWidthHeight(orientation); // we regenerate footer each time, because with may vary with landscape / portrait PageDefinition.Header.RowGroup = _buildRowGroup(PageDefinition.Header.XmlNode); PageDefinition.Footer.RowGroup = _buildRowGroup(PageDefinition.Footer.XmlNode, true); PdfDrawer.NextPage(); _pageCount++; //Console.WriteLine("PDFTemplate.NextPage() pageCount: " + pageCount); }
//jaimelopez :: 20130606 /// <summary> /// Draws the document footer. /// </summary> protected void _drawFooter() { RowGroup rowGroup = PageDefinition.Footer.RowGroup; // if(rowGroup is FooterGroup){ // if( ((FooterGroup)rowGroup).Absolute) return; //print int NextPage operation. // } if (!(rowGroup is FooterGroup) || !((FooterGroup)rowGroup).Absolute) { if (rowGroup.Y != -1) { if (PdfDrawer.CurrentY() < rowGroup.Y) { NextPage(); DrawHeader(); } PdfDrawer.SetY(rowGroup.Y); } } DrawRowGroup(rowGroup, footerData, DocumentGroup.Footer); }
public void Build() { var drawer = new PdfDrawer(this._context.PdfContext, this._context.LabelContext); drawer.Draw(this._context.LabelContents); }
private void Init() { //20130604 :: mellorasinxelas //iTextSharp control. Version iTextSharpVersion = AssembliesTypesLoader.GetAssemblyVersion(typeof(Image)); if (iTextSharpVersion == new Version(0, 0, 0, 0)) { throw new DllNotFoundException("iTextSharp DLL not loaded!"); } if (iTextSharpVersion < new Version(5, 0)) { throw new NotSupportedException(GetType().Name + " requires iTextSharp 5.0 or higher!"); } //---- //20130607 :: mellorasinxelas :: add background image // if (fontpath != string.Empty) // { // PdfDrawer = new Moon.PDFDrawItextSharp.PDFDrawItextSharp( // pageSize, // PageDefinition.Margin_left, // PageDefinition.Margin_right, // PageDefinition.Margin_top, // PageDefinition.Margin_bottom, // stream, // fontpath); // } // else // { // PdfDrawer = new Moon.PDFDrawItextSharp.PDFDrawItextSharp( // pageSize, // PageDefinition.Margin_left, // PageDefinition.Margin_right, // PageDefinition.Margin_top, // PageDefinition.Margin_bottom, // stream); // } //20150914: customizable builder. PdfDrawer = BuildPDFDrawer(pageSize, PageDefinition.Margin_left, PageDefinition.Margin_right, PageDefinition.Margin_top, PageDefinition.Margin_bottom, stream, fontpath); if (PdfDrawer == null) { throw new NullReferenceException("PDF Drawer"); } //--- //20130607 if (PageDefinition.BackgroundImage != null) { //adds background image. PdfDrawer.SetBackgroundImage(PageDefinition.BackgroundImage); } //---- //20130606 :: Absolute Footer if (PageDefinition.Footer != null && PageDefinition.Footer.RowGroup is FooterGroup && ((FooterGroup)PageDefinition.Footer.RowGroup).Absolute) { //reserve space to absolute footer... ((PDFDrawItextSharp.PDFDrawItextSharp)PdfDrawer).ReserveSpaceToFooter(PageDefinition.Footer.RowGroup.Y); } //---- }