示例#1
0
        private static void formPI_DoWork_GenerateMoviesCatalog(FrmProgressIndicator sender, DoWorkEventArgs e)
        {
            var catalogGenDet = (KeyValuePair <Document, PdfGenParams>)e.Argument;
            var document      = catalogGenDet.Key;
            var pdfGenParams  = catalogGenDet.Value;

            var movies = Desene.DAL.GetMoviesForPDF(pdfGenParams);

            //var style = document.Styles["Normal"];
            //style.Font.Name = "Arial Narrow";
            //style.Font.Size = 10;

            var section = document.AddSection();

            section.PageSetup.PageFormat    = PageFormat.A4;
            section.PageSetup.MirrorMargins = true;
            section.PageSetup.TopMargin     = Unit.FromCentimeter(0.5);
            section.PageSetup.BottomMargin  = Unit.FromCentimeter(0.5);
            section.PageSetup.LeftMargin    = Unit.FromCentimeter(2);
            section.PageSetup.RightMargin   = Unit.FromCentimeter(1);

            var table = section.AddTable();

            var sectionWidth =
                (int)document.DefaultPageSetup.PageWidth -
                (int)section.PageSetup.LeftMargin -
                (int)section.PageSetup.RightMargin;

            var columnWidth = sectionWidth / 4;

            var column = table.AddColumn();

            column.Width = columnWidth;
            var column2 = table.AddColumn();

            column2.Width = columnWidth;
            var column3 = table.AddColumn();

            column3.Width = columnWidth;
            var column4 = table.AddColumn();

            column4.Width = columnWidth;

            Row row = null;

            var indexPos = 0;

            for (var i = 0; i < movies.Count; i += 4)
            {
                if (sender.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }

                row = table.AddRow();

                for (var j = 0; j < 4; j++)
                {
                    var k = i + j;
                    if (k >= movies.Count)
                    {
                        break;
                    }

                    var movieObj = movies[k];

                    indexPos++;
                    sender.SetProgress(indexPos, movieObj.FN);

                    var imgOgj = GraphicsHelpers.CreatePosterThumbnailForPDF(150, 232, movieObj.Cover, movieObj.R, movieObj.A,
                                                                             pdfGenParams.PDFGenType == PDFGenType.All
                            ? movieObj.T == "Craciun"
                                ? Properties.Resources.Christmas_Tree_icon
                                : movieObj.T == "Helloween"
                                    ? Properties.Resources.Pumpkin_icon
                                    : null
                            : null);

                    row.Cells[j].Format.Alignment  = ParagraphAlignment.Center;
                    row.Cells[j].VerticalAlignment = VerticalAlignment.Center;
                    row.Cells[j].AddParagraph().AddImage(MigraDocFilenameFromByteArray(imgOgj));
                }

                row = table.AddRow();

                for (var j = 0; j < 4; j++)
                {
                    var k = i + j;
                    if (k >= movies.Count)
                    {
                        break;
                    }

                    var movieObj = movies[k];

                    var dataTable = new Table();
                    var columnD1  = dataTable.AddColumn();
                    columnD1.Width = columnWidth;

                    var rowD1 = dataTable.AddRow();
                    rowD1.Cells[0].Format.Alignment = ParagraphAlignment.Center;
                    rowD1.Cells[0].Format.Font.Name = "Arial Narrow";
                    rowD1.Cells[0].Format.Font.Size = 10;

                    var tm = new TextMeasurement(rowD1.Cells[0].Format.Font);
                    //var strWidth = tm.MeasureString(movieObj.FN).Width;

                    var movieTitle = movieObj.FN;
                    var lineCount  = tm.GetSplittedLineCount(movieTitle, columnWidth, null);

                    if (lineCount > 2)
                    {
                        movieTitle = tm.GetStringWithEllipsis(movieObj.FN, columnWidth, 2);
                    }

                    rowD1.Cells[0].AddParagraph(movieTitle);

                    row.Cells[j].Elements.Add(dataTable);
                }
            }

            //e.Result = document;
        }