// --------------------------------------------------------------------------- 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); } }
// --------------------------------------------------------------------------- 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()); } }
//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); }
// --------------------------------------------------------------------------- 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); } }