Пример #1
0
        public Stream FillForm(Stream inputStream, Models.PDF.Invoice model)
        {
            Stream     outStream  = new MemoryStream();
            PdfReader  pdfReader  = null;
            PdfStamper pdfStamper = null;
            Stream     inStream   = null;

            try
            {
                pdfReader  = new PdfReader(inputStream);
                pdfStamper = new PdfStamper(pdfReader, outStream);

                AcroFields form = pdfStamper.AcroFields;
                Font       font = GetTHSarabunNew();
                foreach (string key in form.Fields.Keys)
                {
                    form.SetFieldProperty(key, "textfont", font.BaseFont, null);
                    form.RegenerateField(key);
                }
                form.SetField("txt_CustomerName", "เจนวิทย์ เพ็ญจำรัส");
                //  form.SetField("rdb_ans_1","Choice1");

                //  form.SetField("txt_CardName", model.CardName);
                //form.SetField("txt_DocNum", model.Docnum);
                // set this if you want the result PDF to not be editable.
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
                inStream?.Close();
            }
        }
Пример #2
0
// ---------------------------------------------------------------------------

        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         */
        public byte[] ManipulatePdf(byte[] src)
        {
            PdfReader reader = new PdfReader(src);

            using (MemoryStream ms = new MemoryStream()) {
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    AcroFields form = stamper.AcroFields;
                    form.SetField("text_1", "Bruno Lowagie");
                    form.SetFieldProperty("text_2", "fflags", 0, null);
                    form.SetFieldProperty("text_2", "bordercolor", BaseColor.RED, null);
                    form.SetField("text_2", "bruno");
                    form.SetFieldProperty("text_3", "clrfflags", TextField.PASSWORD, null);
                    form.SetFieldProperty("text_3", "setflags", PdfAnnotation.FLAGS_PRINT, null);
                    form.SetField("text_3", "12345678", "xxxxxxxx");
                    form.SetFieldProperty("text_4", "textsize", 12f, null);
                    form.RegenerateField("text_4");
                }
                return(ms.ToArray());
            }
        }
Пример #3
0
        /// <summary>
        /// Utility method that fills out the blank blue card
        /// </summary>
        /// <param name="inputStream">The blank blue card</param>
        /// <param name="model">The merit badge student that contains the data</param>
        /// <param name="numberOfPDFs">The number of PDFs we are going to generate for the student</param>
        /// <param name="writeVoid">Whether VOID should be written on unused blue cards</param>
        /// <returns>A Stream containing the filled out PDF</returns>
        private static Stream FillForm(Stream inputStream, MeritBadgeStudentViewModel model, int numberOfPDFs, bool writeVoid)
        {
            Stream     outStream  = new MemoryStream();
            PdfReader  pdfReader  = null;
            PdfStamper pdfStamper = null;

            try
            {
                pdfReader  = new PdfReader(inputStream);
                pdfStamper = new PdfStamper(pdfReader, outStream);
                AcroFields form = pdfStamper.AcroFields;

                // Name
                BaseFont bf          = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.EMBEDDED);
                var      studentName = model.FirstName + " " + model.LastName;
                form.SetField(BlueCardFields.StudentName, studentName);
                float fontSize = 250 / studentName.Length;
                if (fontSize > 12)
                {
                    fontSize = 12;
                }
                if (fontSize < 5)
                {
                    fontSize = 5;
                }
                form.SetFieldProperty(BlueCardFields.StudentName, "textsize", fontSize, null);
                form.SetFieldProperty(BlueCardFields.StudentName, "textfont", bf, null);
                form.RegenerateField(BlueCardFields.StudentName);

                form.SetField(BlueCardFields.Address, model.Address ?? "");
                form.SetField(BlueCardFields.CityStateZip, string.Concat(model.City, " ", model.State, " ", model.ZipCode));
                form.SetField(BlueCardFields.UnitTypeRB, model.UnitType);
                form.SetField(BlueCardFields.UnitType, model.UnitType);
                form.SetField(BlueCardFields.UnitNumber, model.UnitNumber.ToString());
                form.SetField(BlueCardFields.District, model.District ?? "");
                form.SetField(BlueCardFields.Council, model.Council ?? "");

                var mbcclasses = model.StudentClassEntries.ToList();

                for (var i = 1; i + 3 * (numberOfPDFs - 1) <= model.StudentClassEntries.Count() && i <= 3; i++)
                {
                    var mbcclass = mbcclasses[i + 3 * (numberOfPDFs - 1) - 1];
                    var number   = i.ToString();
                    if (i == 3)
                    {
                        number = "";
                    }
                    form.SetField(BlueCardFields.MeritBadgeName + number, mbcclass.MeritBadgeClass.ClassName);
                    form.SetFieldProperty(BlueCardFields.MeritBadgeName + number, "textfont", bf, null);
                    form.RegenerateField(BlueCardFields.MeritBadgeName + number);

                    form.SetField(BlueCardFields.DateApplied + number, "");

                    if (mbcclass.MeritBadgeClass.Counselor != null)
                    {
                        if (mbcclass.IsComplete && mbcclass.MeritBadgeClass.Counselor.DisplayName != null)
                        {
                            form.SetField(BlueCardFields.Counselor + number, mbcclass.MeritBadgeClass.Counselor.FirstName + " " + mbcclass.MeritBadgeClass.Counselor.LastName);
                        }
                        form.SetField(BlueCardFields.CounselorAddress + number, mbcclass.MeritBadgeClass.Counselor.Address);
                        form.SetField(BlueCardFields.CounselorCityStateZip + number, $"{mbcclass.MeritBadgeClass.Counselor.City} {mbcclass.MeritBadgeClass.Counselor.State} {mbcclass.MeritBadgeClass.Counselor.ZipCode}");
                        form.SetField(BlueCardFields.CounselorPhone + number, mbcclass.MeritBadgeClass.Counselor.Telephone);
                    }

                    var requirementTitleList = mbcclass.RequirementList.Select(r => r.RequirementTitle).ToList();
                    var requirementList      = mbcclass.RequirementList.ToList();
                    for (var j = 1; j <= requirementTitleList.Count; j++)
                    {
                        var appendString = number + "." + j.ToString("00");
                        form.SetField(BlueCardFields.Requirement + appendString, requirementTitleList[j - 1]);
                        var fieldString = BlueCardFields.RequirementDate + appendString;
                        var req         = requirementList[j - 1];
                        form.SetField(fieldString, req.IsComplete ? req.CompletionDate.ToString("MM/dd/yyyy") : "");
                        form.SetFieldProperty(fieldString, "textsize", (float)6, null);
                        form.RegenerateField(fieldString);

                        var counselorInitials = string.Empty;
                        if (mbcclass.MeritBadgeClass.Counselor != null)
                        {
                            counselorInitials = mbcclass.MeritBadgeClass.Counselor.FirstName.ElementAt(0).ToString().ToUpperInvariant() +
                                                mbcclass.MeritBadgeClass.Counselor.LastName.ElementAt(0).ToString().ToUpperInvariant();
                        }
                        form.SetField(BlueCardFields.RequirementInitials + appendString, req.IsComplete ? counselorInitials : "");
                    }
                    if (mbcclass.IsComplete)
                    {
                        form.SetField(BlueCardFields.DateCompleted + number, mbcclass.CompletionDate.ToString("MM/dd/yyyy"));
                    }

                    if (!string.IsNullOrWhiteSpace(mbcclass.Remarks))
                    {
                        form.SetField(BlueCardFields.Remarks + number, mbcclass.Remarks);
                    }
                }
                if (writeVoid && numberOfPDFs * 3 - mbcclasses.Count > 0)
                {
                    form.SetField(BlueCardFields.BlueCardVoid1, "VOID");
                    if (numberOfPDFs * 3 - mbcclasses.Count > 1)
                    {
                        form.SetField(BlueCardFields.BlueCardVoid2, "VOID");
                    }
                }
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
            }
        }