示例#1
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        //--

        //--------------------------------------------------------------------
        // _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;
        }
示例#6
0
        /// <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);
        }
示例#7
0
        //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);
            }
            //----
        }