示例#1
0
// ---------------------------------------------------------------------------
        public void Write(Stream stream)
        {
            using (ZipFile zip = new ZipFile()) {
                NestedTables  n     = new NestedTables();
                byte[]        ntPdf = Utility.PdfBytes(n);
                Advertisement a     = new Advertisement();
                byte[]        aPdf  = a.ManipulatePdf(ntPdf);

                PdfReader reader = new PdfReader(aPdf);
                using (MemoryStream ms = new MemoryStream()) {
                    using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                        AcroFields      form = stamper.AcroFields;
                        PushbuttonField ad   = form.GetNewPushbuttonFromField("advertisement");
                        ad.Layout           = PushbuttonField.LAYOUT_ICON_ONLY;
                        ad.ProportionalIcon = true;
                        ad.Image            = Image.GetInstance(RESOURCE);
                        form.ReplacePushbuttonField("advertisement", ad.Field);
                    }
                    zip.AddEntry(RESULT, ms.ToArray());
                }
                zip.AddFile(RESOURCE, "");
                zip.AddEntry(Utility.ResultFileName(a.ToString() + ".pdf"), aPdf);
                zip.Save(stream);
            }
        }
示例#2
0
// ---------------------------------------------------------------------------
        public byte[] FillTemplate(byte[] pdf, Movie movie)
        {
            using (MemoryStream ms = new MemoryStream()) {
                PdfReader reader = new PdfReader(pdf);
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    AcroFields form  = stamper.AcroFields;
                    BaseColor  color = WebColors.GetRGBColor(
                        "#" + movie.entry.category.color
                        );
                    PushbuttonField bt = form.GetNewPushbuttonFromField(POSTER);
                    bt.Layout           = PushbuttonField.LAYOUT_ICON_ONLY;
                    bt.ProportionalIcon = true;
                    bt.Image            = Image.GetInstance(Path.Combine(IMAGE, movie.Imdb + ".jpg"));
                    bt.BackgroundColor  = color;
                    form.ReplacePushbuttonField(POSTER, bt.Field);

                    PdfContentByte           canvas = stamper.GetOverContent(1);
                    float                    size   = 12;
                    AcroFields.FieldPosition f      = form.GetFieldPositions(TEXT)[0];
                    while (AddParagraph(CreateMovieParagraph(movie, size),
                                        canvas, f, true) && size > 6)
                    {
                        size -= 0.2f;
                    }
                    AddParagraph(CreateMovieParagraph(movie, size), canvas, f, false);

                    form.SetField(YEAR, movie.Year.ToString());
                    form.SetFieldProperty(YEAR, "bgcolor", color, null);
                    form.SetField(YEAR, movie.Year.ToString());
                    stamper.FormFlattening = true;
                }
                return(ms.ToArray());
            }
        }
示例#3
0
        //2.3
        //print QRcode in button field
        private void _GenQRCode(PdfStamper stamper, string FieldName, string QrCodeContent)
        {
            AcroFields      form      = stamper.AcroFields;
            PushbuttonField ad        = form.GetNewPushbuttonFromField(FieldName);
            BarcodeQRCode   qrcode    = new BarcodeQRCode(QrCodeContent, 2, 2, null);
            var             qrcodeImg = qrcode.GetImage();

            ad.Layout           = PushbuttonField.LAYOUT_ICON_ONLY;
            ad.ProportionalIcon = true;
            ad.Image            = qrcodeImg;

            form.ReplacePushbuttonField(FieldName, ad.Field);
        }
示例#4
0
        // ---------------------------------------------------------------------------
        public void Write(Stream stream)
        {
            using (ZipFile zip = new ZipFile())
            {
                MovieAds movieAds = new MovieAds();
                byte[]   pdf      = movieAds.CreateTemplate();
                zip.AddEntry(TEMPLATE, pdf);

                using (MemoryStream msDoc = new MemoryStream())
                {
                    using (Document document = new Document())
                    {
                        using (PdfSmartCopy copy = new PdfSmartCopy(document, msDoc))
                        {
                            document.Open();
                            PdfReader    reader;
                            PdfStamper   stamper = null;
                            AcroFields   form    = null;
                            int          count   = 0;
                            MemoryStream ms      = null;
                            using (ms)
                            {
                                foreach (Movie movie in PojoFactory.GetMovies())
                                {
                                    if (count == 0)
                                    {
                                        ms      = new MemoryStream();
                                        reader  = new PdfReader(RESOURCE);
                                        stamper = new PdfStamper(reader, ms);
                                        stamper.FormFlattening = true;
                                        form = stamper.AcroFields;
                                    }
                                    count++;
                                    PdfReader ad = new PdfReader(
                                        movieAds.FillTemplate(pdf, movie)
                                        );
                                    PdfImportedPage page = stamper.GetImportedPage(ad, 1);
                                    PushbuttonField bt   = form.GetNewPushbuttonFromField(
                                        "movie_" + count
                                        );
                                    bt.Layout           = PushbuttonField.LAYOUT_ICON_ONLY;
                                    bt.ProportionalIcon = true;
                                    bt.Template         = page;
                                    form.ReplacePushbuttonField("movie_" + count, bt.Field);
                                    if (count == 16)
                                    {
                                        stamper.Close();
                                        reader = new PdfReader(ms.ToArray());
                                        copy.AddPage(copy.GetImportedPage(reader, 1));
                                        count = 0;
                                    }
                                }
                                if (count > 0)
                                {
                                    stamper.Close();
                                    reader = new PdfReader(ms.ToArray());
                                    copy.AddPage(copy.GetImportedPage(reader, 1));
                                }
                            }
                        }
                    }
                    zip.AddEntry(RESULT, msDoc.ToArray());
                }

                zip.AddFile(RESOURCE, "");
                zip.Save(stream);
            }
        }