مشکل در فوتر
اهمیت: عادی نوع: درخواست راهنمایی شماره نگارش: 2.1
با سلام و احترام
من از فوتر سفارشی استفاده کردم که مطلبی رو در هر صفحه نمایش داده شود
اما مشکل به این صورت است که در صفحه اول فوتر و جدول اصلی روی هم قرار میگیره اما در بقیه صفحات این مشکل وجود نداره آیا در استفاده من ایرادی وجود داره؟

        public void PageFinished(PdfWriter writer, Document document, IList<SummaryCellData> columnCellsSummaryData)
        {
            var pageSize = document.PageSize;
            var text = "صفحه " + writer.PageNumber + " از ";
            var textLen = _font.BaseFont.GetWidthPoint(text, _font.Size) + 17;
            var positionX = pageSize.Right - 10;
            var align = _direction == PdfRunDirection.RightToLeft ? Element.ALIGN_RIGHT : Element.ALIGN_LEFT;
            ColumnText.ShowTextAligned(
                canvas: _pdfContentByte,
                alignment: align,
                phrase: ReportMethod.SetFont(text, 20),
                x: positionX,
                y: pageSize.GetBottom(4),
                rotation: 0,
                runDirection: (int)_direction,
                arabicOptions: 0);
            var x = _direction == PdfRunDirection.RightToLeft ? positionX - textLen : positionX + textLen;
            _pdfContentByte.AddTemplate(_template, x, pageSize.GetBottom(4));
            //--------------------------------------
            if (_Info != null)
            {
                var table = new PdfGrid(1) { RunDirection = (int)_direction, WidthPercentage = 100 };

                string[] msgField = { "مدیر گروه", _Info.Where(sp => sp.ID == _MemberID).FirstOrDefault().InstKindName, _Info.Where(sp => sp.ID == 0).FirstOrDefault().InstKindName, "امور مالی", "معاون پشتیبانی" };
                string[] dataField = { "", _Info.Where(sp => sp.ID == _MemberID).FirstOrDefault().MasterName, _Info.Where(sp => sp.ID == 0).FirstOrDefault().MasterName, "", _Info.Where(sp => sp.ID == 1).FirstOrDefault().MasterName };
                var infoTable = new PdfGrid(msgField.Length) { RunDirection = PdfWriter.RUN_DIRECTION_RTL, WidthPercentage = 100 };
                foreach (var item in msgField)
                {
                    infoTable.AddCell(ReportMethod.SetCell(item, PdfPCell.NO_BORDER, 1, PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, true, 20));
                }
                foreach (var item in dataField)
                {
                    infoTable.AddCell(ReportMethod.SetCell(item, PdfPCell.NO_BORDER, 1, PdfPCell.ALIGN_CENTER, PdfPCell.ALIGN_MIDDLE, true, 20));
                }

                table.AddCell(infoTable);
                table.SetTotalWidth(new[] { pageSize.Width - document.LeftMargin - document.RightMargin });
                table.WriteSelectedRows(
                        rowStart: 0,
                        rowEnd: -1,
                        xPos: document.LeftMargin,
                        yPos: document.BottomMargin - 10,
                        canvas: writer.DirectContent);

            }
        }


  • #
    ‫۱۱ سال و ۲ ماه قبل، شنبه ۲۶ مرداد ۱۳۹۲، ساعت ۰۵:۳۳
    - در حالت پیش فرض با توجه به اینکه فوتر گزارش یک سطر ساده است، در قسمت DocumentPreferences ، مارجین متناسبی انتخاب شده. اگر ارتفاع فوتر شما بیشتر است، باید این مورد را دستی توسط متد DocumentMargins  تنظیم کنید.
    - ضمنا برای تعریف فوتر به نحوی ساده‌تر می‌تونید از
    inline providers هم استفاده کنید.
    • #
      ‫۱۱ سال و ۲ ماه قبل، یکشنبه ۲۷ مرداد ۱۳۹۲، ساعت ۱۸:۴۲
      با سلام دوباره
      من از مارجین هم استفاده کردم اما کل صفحه رو مارجین داد و باز هم در صفحه اول سامری با فوتر من تداخل داشت اما در صفحات بعدی این مشکل وجود نداره
      متشکرم از شما
      • #
        ‫۱۱ سال و ۲ ماه قبل، یکشنبه ۲۷ مرداد ۱۳۹۲، ساعت ۱۸:۵۴
        شما در  table.WriteSelectedRows، مختصات y رو خودتون دستی دارید تنظیم می‌کنید.
        به این ترتیب جدول اصلی نمی‌تونه از وجود آن مطلع شود، چون PDF یک فرمت canvas است که اشیاء روی آن رسم می‌شوند. در این حالت سفارشی، فقط با مقدار دهی صحیح yPos و DocumentMargins می‌شود محل دقیق قرارگیری جدول رسم شده با table.WriteSelectedRows را مشخص کرد.