示例#1
0
        public static void FlatPDFonlyFistPage(List <string> files)
        {
            LogHelper.Log("Flatt all PDF comments", LogType.Successful);

            foreach (var file in files)
            {
                string OutFile = $"{Path.GetDirectoryName(file)}{Path.DirectorySeparatorChar}{Path.GetFileNameWithoutExtension(file)}_flat.pdf";

                LogHelper.Log($"Flattening file: { Path.GetFileNameWithoutExtension(file)}");

                using (FileStream stream = new FileStream(OutFile, FileMode.Create))
                {
                    PdfReader  reader  = null;
                    PdfStamper stamper = null;
                    try
                    {
                        var memStream1 = new MemoryStream();

                        reader = new PdfReader(file);
                        reader.SelectPages("1");

                        stamper = new PdfStamper(reader, memStream1)
                        {
                            FormFlattening       = true,
                            AnnotationFlattening = true,
                            FreeTextFlattening   = true,
                        };
                        stamper.Close();
                        PdfReader readerfirstPage = new PdfReader(memStream1.ToArray());

                        Document doc = new Document();
                        PdfCopy  pdf = new PdfCopy(doc, stream);
                        doc.Open();
                        pdf.AddDocument(readerfirstPage);

                        PdfReader readerOtherPages = new PdfReader(file);
                        if (readerOtherPages.NumberOfPages > 2)
                        {
                            readerOtherPages.SelectPages($"2-{readerOtherPages.NumberOfPages}");
                            pdf.AddDocument(readerOtherPages);
                        }
                        doc.Close();
                        pdf.Close();
                    }
                    catch (Exception e)
                    {
                        LogHelper.Log(e.ToString(), LogType.Error);

                        reader?.Close();
                    }
                    finally
                    {
                        reader?.Close();
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// Add PdfFile
        /// </summary>
        /// <param name="fullpath"></param>
        public void Add(string fullpath, List <Dictionary <String, Object> > parentBookmarks)
        {
            var pdfFilename = Path.GetFileName(fullpath);

            PdfReader reader = null;

            try
            {
                // Open PDF
                reader = new PdfReader(fullpath);

                // Although this method seems to have a large memory consumption, it is troublesome as this is done
                copy.AddDocument(reader);

                AddBookmark(reader, pdfFilename, parentBookmarks);

                // Update count of pages
                pageCount += reader.NumberOfPages;
            }
            catch (Exception e)
            {
                logger?.LogError(e, $"Failed to join {pdfFilename}");
                throw;
            }
            finally
            {
                reader?.Close();
            }
        }
示例#3
0
        /// <summary>
        /// Takes an ordered list of files and merges them into one output file.
        /// </summary>
        /// <param name="mergeList">An ordered list of file paths.</param>
        /// <returns>The path to merged file created in this method.</returns>
        private static string MergeOrderedList(IEnumerable <string> mergeList)
        {
            var filename        = Guid.NewGuid() + ".pdf";
            var outfileFullPath = Path.Combine(Constants.InputDirectory.FullName, filename);

            using (var stream = new FileStream(outfileFullPath, FileMode.Create))
                using (var doc = new Document())
                    using (var pdf = new PdfCopy(doc, stream))
                    {
                        PdfReader reader = null;

                        doc.Open();

                        foreach (var file in mergeList)
                        {
                            reader = new PdfReader(file);
                            for (var i = 0; i < reader.NumberOfPages; i++)
                            {
                                var page = pdf.GetImportedPage(reader, i + 1);
                                pdf.AddPage(page);
                            }
                        }

                        pdf.FreeReader(reader);
                        reader?.Close();
                    }

            return(outfileFullPath);
        }
示例#4
0
        private string ReadPDF(string filePath)
        {
            var       builder  = new StringBuilder();
            PdfReader document = null;

            try
            {
                document = new PdfReader(filePath);

                for (int i = 1; i <= document.NumberOfPages; i++)
                {
                    byte[] stream    = document.GetPageContent(i);
                    var    tokenizer = new PRTokeniser(new RandomAccessFileOrArray(stream));
                    while (tokenizer.NextToken())
                    {
                        if (tokenizer.TokenType == PRTokeniser.TokType.STRING)
                        {
                            builder.Append(tokenizer.StringValue);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                builder.Append(e.Message);
            }
            finally
            {
                document?.Close();
            }

            return(builder.ToString());
        }
示例#5
0
        private static void Merge <TSource>(Stream target, Func <TSource, PdfReader> createPdfReader, params TSource[] sources)
        {
            if (sources.Length == 0)
            {
                throw new ArgumentException("At least one source must be given.");
            }

            Document  document = null;
            PdfReader reader   = null;

            try
            {
                document = new Document();
                PdfCopy pdf = new PdfCopy(document, target);
                document.Open();

                foreach (TSource file in sources)
                {
                    reader = createPdfReader(file);
                    pdf.AddDocument(reader);
                    reader.Close();
                }
            }
            catch (Exception e)
            {
                reader?.Close();
                throw new PdfMergeFailedException("Failed to merge pdfs", e);
            }
            finally
            {
                document?.Close();
            }
        }
示例#6
0
        public Stream FillForm(Stream inputStream, Profile profile)
        {
            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;
                form.SetField("FirstName", $"{profile.FirstName}");
                form.SetField("LastName", $"{profile.LastName}");
                form.SetField("IDNumber", $"{profile.IDNumber}");
                form.SetField("Nationality", $"{profile.Nationality}");
                form.SetField("Email", $"{profile.Email}");
                form.SetField("PhoneNumber", $"{profile.PhoneNumber}");
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
                inStream?.Close();
            }
        }
示例#7
0
        public Stream FromValues(string pdfTemplate, IDictionary <string, string> values)
        {
            var pdfStream = new FileStream(path: pdfTemplate, mode: FileMode.Open);
            var outStream = new MemoryStream();

            PdfReader  pdfReader  = null;
            PdfStamper pdfStamper = null;

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

                foreach (string f in values.Keys)
                {
                    form.SetField(f, values[f]);
                }

                // set this if you want the result PDF to not be editable.
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
            }
        }
示例#8
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();
            }
        }
        public Stream FillForm(Stream inputStream, PDFSampleForm 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;
                form.SetField(SampleFormFieldNames.FirstName, model.FirstName);
                form.SetField(SampleFormFieldNames.LastName, model.LastName);
                form.SetField(SampleFormFieldNames.IAmAwesomeCheck, model.AwesomeCheck ? "Yes" : "Off");
                // set this if you want the result PDF to be uneditable.
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
                inStream?.Close();
            }
        }
示例#10
0
        public string CreateInvoiceForOrder()
        {
            // build in checks....

            PdfReader  pdfReader  = null;
            PdfStamper pdfStamper = null;

            try
            {
                pdfReader  = new PdfReader(_template);
                pdfStamper = new PdfStamper(pdfReader, _outputFile);

                AcroFields form = pdfStamper.AcroFields;

                // Company address
                form.SetField("Company Name", "Food shop NV");
                form.SetField("Email Address", "*****@*****.**");
                form.SetField("Address 1", "Teststraat 11, 9000 Gent");
                form.SetField("Address 2", "+32 484/26.23.55");
                // Client address
                form.SetField("Client Name", _customer.Name + " " + _customer.LastName);
                form.SetField("Client Email Address", _customer.EmailAddress);
                form.SetField("Client Address 1", _customer.Address.Street + " " + _customer.Address.StreetNumber);
                form.SetField("Client Address 2", _customer.Address.PostalCode + " " + _customer.Address.City + " " + _customer.Address.Country);
                // Order data
                form.SetField("Due Date", DateTime.Today.ToString("dd/MM/yyyy"));
                form.SetField("Date", DateTime.Today.ToString("dd/MM/yyyy"));
                form.SetField("Invoice Number", _order.InvoiceId);

                for (int i = 1; i < (_orderLines.Count + 1); i++)
                {
                    form.SetField("Item Description Row " + i, _orderLines[i - 1].Item);
                    form.SetField("Quantity Row " + i, "st " + _orderLines[i - 1].QtyOrdered.ToString());
                    form.SetField("Price Row " + i, "€ " + Math.Round(_orderLines[i - 1].Price, 2).ToString());
                    form.SetField("Amount Row " + i, "€ " + Math.Round(_orderLines[i - 1].Price * _orderLines[i - 1].QtyOrdered, 2).ToString());
                }

                form.SetField("Amount_5", "€ " + Math.Round(_order.TotalPrice, 2).ToString());
                form.SetField("Amount_6", "% 6");
                form.SetField("Amount_7", "€ " + Math.Round(_order.TotalPrice * 1.06M, 2).ToString());

                form.SetField("Notes", "Thanks for your order!");
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
                _template?.Close();
                _outputFile?.Close();
            }

            return((_outputFile as FileStream).Name);
        }
示例#11
0
        public static void FlatPDF(List <string> files)
        {
            LogHelper.Log("Flatt all PDF comments", LogType.Successful);

            foreach (var file in files)
            {
                string OutFile = $"{Path.GetDirectoryName(file)}{Path.DirectorySeparatorChar}{Path.GetFileNameWithoutExtension(file)}_flat.pdf";

                LogHelper.Log($"Flattening file: { Path.GetFileNameWithoutExtension(file)}");

                using (FileStream stream = new FileStream(OutFile, FileMode.Create))
                {
                    PdfReader  reader  = null;
                    PdfStamper stamper = null;
                    try
                    {
                        reader = new PdfReader(file);

                        stamper = new PdfStamper(reader, stream)
                        {
                            FormFlattening       = true,
                            AnnotationFlattening = true,
                            FreeTextFlattening   = true,
                        };
                        stamper.Close();
                    }
                    catch (Exception e)
                    {
                        LogHelper.Log(e.ToString(), LogType.Error);

                        reader?.Close();
                    }
                    finally
                    {
                        reader?.Close();
                    }
                }
            }
        }
        public ICollection GetFormFields(Stream pdfStream)
        {
            PdfReader reader = null;

            try
            {
                PdfReader  pdfReader  = new PdfReader(pdfStream);
                AcroFields acroFields = pdfReader.AcroFields;
                return(acroFields.Fields.Keys);
            }
            finally
            {
                reader?.Close();
            }
        }
示例#13
0
        // ToDo: Функция по закрытию документов точно нужна?
        private void Close()
        {
            if (!IsOpen)
            {
                throw new Exception("Pdf file is not open! Please first load and open file!");
            }

            _document?.Close();
            _reader?.Close();

            _document = null;
            _reader   = null;

            _isOpen = false;
        }
        public PdfInfo(string file)
        {
            try
            {
                reader = new PdfReader(file);

                NumberOfPages  = reader.NumberOfPages;
                SignatureNames = reader.AcroFields.GetSignatureNames().AsReadOnly();
            }
            catch (Exception e)
            {
                throw new ReadingPdfInfoFailedException($"Failed to read information from pdf file {file}", e);
            }
            finally
            {
                reader?.Close();
            }
        }
示例#15
0
    public static void VerifyPdfFileIsReadable(byte[] file)
    {
        PdfReader reader = null;

        try
        {
            reader = new PdfReader(file);
            var author = reader.Info["Author"] as string;
            if (string.IsNullOrWhiteSpace(author) || !author.Equals("Vahid"))
            {
                throw new InvalidPdfException("This is not a valid PDF file.");
            }
        }
        finally
        {
            reader?.Close();
        }
    }
示例#16
0
        public static int GetNumberOfPages(string filePath)
        {
            PdfReader reader = null;

            try
            {
                reader = new PdfReader(File.ReadAllBytes(filePath));
                int numPage = reader.NumberOfPages;
                return(numPage);
            }
            catch (Exception ex)
            {
                return(1);
            }
            finally
            {
                reader?.Close();
            }
        }
示例#17
0
        private Dictionary <string, string> LoadTemplateData()
        {
            PdfReader pdfReader = null;

            try
            {
                pdfReader = new PdfReader(_templatePath);
                var acroFields = pdfReader.AcroFields;
                var parametros = new Dictionary <string, string>();

                foreach (var item in acroFields.Fields.Keys)
                {
                    parametros.Add(item.ToString(), string.Empty);
                }

                return(parametros);
            }
            finally
            {
                pdfReader?.Close();
            }
        }
示例#18
0
        public static async Task <object> Handle(string organizationId, RosterRequest request)
        {
            var reportOptions = JsonSerializer.Deserialize <TaggingDataFormReportOptionsDto>(request.body.GetRawText());

            var fileTimestamp = $"{DateTime.Now:yyyyMMddHHmmss} UTC";

            const string baseMasterReportFileName = "MASTER - Tagging Data form.pdf";
            var          basePath = AppDomain.CurrentDomain.BaseDirectory;

            var masterReportFileName = Path.Combine(basePath, "pdf", baseMasterReportFileName);
            var filledReportFileName = Path.Combine("/tmp", baseMasterReportFileName.Replace("MASTER - ", "FILLED - ").Replace(".pdf", $" - {fileTimestamp}.pdf"));

            var organizationService = new OrganizationService(organizationId);
            var organization        = await organizationService.GetOrganization();

            var organizationInformation = $"{organization.organizationName} - {organization.phone} - {organization.emailAddress}";

            var seaTurtleService = new SeaTurtleService(organizationId);
            var seaTurtle        = await seaTurtleService.GetSeaTurtle(reportOptions.seaTurtleId);

            var seaTurtleTagService = new SeaTurtleTagService(organizationId, reportOptions.seaTurtleId);
            var seaTurtleTags       = await seaTurtleTagService.GetSeaTurtleTags();

            var seaTurtleMorphometricService = new SeaTurtleMorphometricService(organizationId, reportOptions.seaTurtleId);
            var seaTurtleMorphometrics       = await seaTurtleMorphometricService.GetSeaTurtleMorphometrics();

            var nonPitTags = seaTurtleTags.Where(x => x.tagType != "PIT" && !string.IsNullOrWhiteSpace(x.tagNumber));

            var flipperTagLeftFront  = string.Join(", ", nonPitTags.Where(x => x.location == "LFF").Select(x => x.tagNumber));
            var flipperTagRightFront = string.Join(", ", nonPitTags.Where(x => x.location == "RFF").Select(x => x.tagNumber));
            var flipperTagLeftRear   = string.Join(", ", nonPitTags.Where(x => x.location == "LRF").Select(x => x.tagNumber));
            var flipperTagRightRear  = string.Join(", ", nonPitTags.Where(x => x.location == "RRF").Select(x => x.tagNumber));

            var pitTags        = seaTurtleTags.Where(x => x.tagType == "PIT");
            var pitTagNumber   = string.Join(", ", pitTags.Where(x => !string.IsNullOrWhiteSpace(x.tagNumber)).Select(x => x.tagNumber));
            var pitTagLocation = string.Join(", ", pitTags.Where(x => !string.IsNullOrWhiteSpace(x.location)).Select(x => x.location));

            //----------------------------------------------------------------------------------------------------

            var pdfReader = new PdfReader(masterReportFileName);

            pdfReader.RemoveUsageRights();

            var fs         = new FileStream(filledReportFileName, FileMode.Create);
            var pdfStamper = new PdfStamper(pdfReader, fs, '\0', false);

            var info = pdfReader.Info;

            info["Title"]       = baseMasterReportFileName.Replace("MASTER - ", "").Replace(".pdf", $" - {fileTimestamp}.pdf");
            pdfStamper.MoreInfo = info;

            var acroFields = pdfStamper.AcroFields;

            acroFields.SetField("txtSID", reportOptions.printSidOnForm ? $"SID:  {seaTurtle.sidNumber}" : string.Empty);
            acroFields.SetField("txtSpecies", seaTurtle.species);

            string dateCaptured = seaTurtle.dateCaptured ?? seaTurtle.dateAcquired;

            if (!string.IsNullOrEmpty(dateCaptured))
            {
                acroFields.SetField("txtDateCapturedDay", dateCaptured.Substring(8, 2));
                acroFields.SetField("txtDateCapturedMonth", dateCaptured.Substring(5, 2));
                acroFields.SetField("txtDateCapturedYear", dateCaptured.Substring(0, 4));
            }

            if (!string.IsNullOrEmpty(seaTurtle.dateRelinquished))
            {
                acroFields.SetField("txtDateReleasedDay", seaTurtle.dateRelinquished.Substring(8, 2));
                acroFields.SetField("txtDateReleasedMonth", seaTurtle.dateRelinquished.Substring(5, 2));
                acroFields.SetField("txtDateReleasedYear", seaTurtle.dateRelinquished.Substring(0, 4));
            }

            acroFields.SetField("txtFlipperTagLeftFront", flipperTagLeftFront);
            acroFields.SetField("txtFlipperTagRightFront", flipperTagRightFront);
            acroFields.SetField("txtFlipperTagLeftRear", flipperTagLeftRear);
            acroFields.SetField("txtFlipperTagRightRear", flipperTagRightRear);

            acroFields.SetField("txtPitTagNumber", pitTagNumber);
            acroFields.SetField("txtPitTagLocation", pitTagLocation);

            if (seaTurtle.wasCarryingTagsWhenEnc)
            {
                acroFields.SetField("radTurtleCarryingTags", "Yes");

                if (seaTurtle.recaptureType == "S")
                {
                    acroFields.SetField("radRecapture", "1");
                }
                else if (seaTurtle.recaptureType == "D")
                {
                    acroFields.SetField("radRecapture", "2");
                }
            }
            else
            {
                acroFields.SetField("radTurtleCarryingTags", "No");
            }

            acroFields.SetField("txtTagReturnAddress", seaTurtle.tagReturnAddress);

            acroFields.SetField("txtOrganizationInformation", organizationInformation);

            switch (seaTurtle.captureProjectType)
            {
            case "N":
                acroFields.SetField("radProjectType", "NestingBeach");
                switch (seaTurtle.didTurtleNest)
                {
                case "Y":
                    acroFields.SetField("radDidTurtleNest", "Yes");
                    break;

                case "N":
                    acroFields.SetField("radDidTurtleNest", "No");
                    break;

                case "U":
                    acroFields.SetField("radDidTurtleNest", "Undetermined");
                    break;

                default:
                    break;
                }
                break;

            case "T":
                acroFields.SetField("radProjectType", "TangleNet");
                break;

            case "P":
                acroFields.SetField("radProjectType", "PoundNet");
                break;

            case "H":
                acroFields.SetField("radProjectType", "HandCatch");
                break;

            case "S":
                acroFields.SetField("radProjectType", "Stranding");
                break;

            case "O":
                acroFields.SetField("radProjectType", "Other");
                acroFields.SetField("txtProjectTypeOther", seaTurtle.captureProjectOther);
                break;

            default:
                break;
            }

            if (reportOptions.populateFacilityField)
            {
                acroFields.SetField("txtFacility", organizationInformation);
            }

            var acquiredCounty    = !string.IsNullOrEmpty(seaTurtle.acquiredCounty) ? $"; County: {seaTurtle.acquiredCounty}" : string.Empty;
            var acquiredLatitude  = !string.IsNullOrEmpty(seaTurtle.acquiredLatitude) ? $"; Latitude: {seaTurtle.acquiredLatitude}" : string.Empty;
            var acquiredLongitude = !string.IsNullOrEmpty(seaTurtle.acquiredLongitude) ? $"; Longitude: {seaTurtle.acquiredLongitude}" : string.Empty;
            var captureLocation   = $"{seaTurtle.acquiredFrom}{acquiredCounty}{acquiredLatitude}{acquiredLongitude}".TrimStart(' ', ';');

            acroFields.SetField("txtCaptureLocation", captureLocation);

            var relinquishedCounty    = !string.IsNullOrEmpty(seaTurtle.relinquishedCounty) ? $"; County: {seaTurtle.relinquishedCounty}" : string.Empty;
            var relinquishedLatitude  = !string.IsNullOrEmpty(seaTurtle.relinquishedLatitude) ? $"; Latitude: {seaTurtle.relinquishedLatitude}" : string.Empty;
            var relinquishedLongitude = !string.IsNullOrEmpty(seaTurtle.relinquishedLongitude) ? $"; Longitude: {seaTurtle.relinquishedLongitude}" : string.Empty;
            var releaseLocation       = $"{seaTurtle.relinquishedTo}{relinquishedCounty}{relinquishedLatitude}{relinquishedLongitude}".TrimStart(' ', ';');

            acroFields.SetField("txtReleaseLocation", releaseLocation);

            // If first string is greater than second string, it returns 1 else it returns -1.
            var dateAcquired        = string.IsNullOrWhiteSpace(seaTurtle.dateAcquired) ? "0000-00-00" : seaTurtle.dateAcquired;
            var dateRelinquished    = string.IsNullOrWhiteSpace(seaTurtle.dateRelinquished) ? "9999-99-99" : seaTurtle.dateRelinquished;
            var closestMorphometric = new SeaTurtleMorphometricModel();

            if (reportOptions.useMorphometricsClosestTo == "dateAcquired")
            {
                // get first after acquired...
                closestMorphometric = seaTurtleMorphometrics
                                      .Where(x => string.Compare(dateAcquired, x.dateMeasured) == -1)
                                      .OrderBy(x => x.dateMeasured)
                                      .FirstOrDefault();

                //...if none, try earliest date
                closestMorphometric ??= seaTurtleMorphometrics
                .OrderBy(x => x.dateMeasured)
                .FirstOrDefault();
            }
            else //if (useMorphometricsClosestTo == "dateRelinquished")
            {
                // get first before relinquished...
                closestMorphometric = seaTurtleMorphometrics
                                      .Where(x => string.Compare(dateRelinquished, x.dateMeasured) == 1)
                                      .OrderByDescending(x => x.dateMeasured)
                                      .FirstOrDefault();

                //...if none, try latest date
                closestMorphometric ??= seaTurtleMorphometrics
                .OrderByDescending(x => x.dateMeasured)
                .FirstOrDefault();
            }

            if (closestMorphometric != null)
            {
                if (closestMorphometric.sclNotchNotchValue > 0)
                {
                    if (closestMorphometric.sclNotchNotchUnits == "cm")
                    {
                        acroFields.SetField("txtSclMinCm", Convert.ToString(closestMorphometric.sclNotchNotchValue));
                    }
                    else if (closestMorphometric.sclNotchNotchUnits == "in")
                    {
                        acroFields.SetField("txtSclMinIn", Convert.ToString(closestMorphometric.sclNotchNotchValue));
                    }
                }
                if (closestMorphometric.sclNotchTipValue > 0)
                {
                    if (closestMorphometric.sclNotchTipUnits == "cm")
                    {
                        acroFields.SetField("txtSclNotchTipCm", Convert.ToString(closestMorphometric.sclNotchTipValue));
                    }
                    else if (closestMorphometric.sclNotchTipUnits == "in")
                    {
                        acroFields.SetField("txtSclNotchTipIn", Convert.ToString(closestMorphometric.sclNotchTipValue));
                    }
                }
                if (closestMorphometric.scwValue > 0)
                {
                    if (closestMorphometric.scwUnits == "cm")
                    {
                        acroFields.SetField("txtScwCm", Convert.ToString(closestMorphometric.scwValue));
                    }
                    else if (closestMorphometric.scwUnits == "in")
                    {
                        acroFields.SetField("txtScwIn", Convert.ToString(closestMorphometric.scwValue));
                    }
                }
                if (closestMorphometric.cclNotchNotchValue > 0)
                {
                    if (closestMorphometric.cclNotchNotchUnits == "cm")
                    {
                        acroFields.SetField("txtCclMinCm", Convert.ToString(closestMorphometric.cclNotchNotchValue));
                    }
                    else if (closestMorphometric.cclNotchNotchUnits == "in")
                    {
                        acroFields.SetField("txtCclMinIn", Convert.ToString(closestMorphometric.cclNotchNotchValue));
                    }
                }
                if (closestMorphometric.cclNotchTipValue > 0)
                {
                    if (closestMorphometric.cclNotchTipUnits == "cm")
                    {
                        acroFields.SetField("txtCclNotchTipCm", Convert.ToString(closestMorphometric.cclNotchTipValue));
                    }
                    else if (closestMorphometric.cclNotchTipUnits == "in")
                    {
                        acroFields.SetField("txtCclNotchTipIn", Convert.ToString(closestMorphometric.cclNotchTipValue));
                    }
                }
                if (closestMorphometric.ccwValue > 0)
                {
                    if (closestMorphometric.ccwUnits == "cm")
                    {
                        acroFields.SetField("txtCcwCm", Convert.ToString(closestMorphometric.ccwValue));
                    }
                    else if (closestMorphometric.ccwUnits == "in")
                    {
                        acroFields.SetField("txtCcwIn", Convert.ToString(closestMorphometric.ccwValue));
                    }
                }
                if (closestMorphometric.weightValue > 0)
                {
                    if (closestMorphometric.weightUnits == "kg")
                    {
                        acroFields.SetField("txtWeightKg", Convert.ToString(closestMorphometric.weightValue));
                    }
                    else if (closestMorphometric.weightUnits == "lb")
                    {
                        acroFields.SetField("txtWeightLbs", Convert.ToString(closestMorphometric.weightValue));
                    }
                }
            }

            if (seaTurtle.inspectedForTagScars)
            {
                acroFields.SetField("radTagScars", "Yes");
                acroFields.SetField("txtTagScars", seaTurtle.tagScarsLocated);
            }
            else
            {
                acroFields.SetField("radTagScars", "No");
            }

            if (seaTurtle.scannedForPitTags)
            {
                acroFields.SetField("radPitTags", "Yes");
                acroFields.SetField("txtPitTags", seaTurtle.pitTagsScanFrequency);
            }
            else
            {
                acroFields.SetField("radPitTags", "No");
            }

            if (seaTurtle.scannedForMagneticWires)
            {
                acroFields.SetField("radMagneticWires", "Yes");
                acroFields.SetField("txtMagneticWires", seaTurtle.magneticWiresLocated);
            }
            else
            {
                acroFields.SetField("radMagneticWires", "No");
            }

            if (seaTurtle.inspectedForLivingTags)
            {
                acroFields.SetField("radLivingTags", "Yes");
                acroFields.SetField("txtLivingTags", seaTurtle.livingTagsLocated);
            }
            else
            {
                acroFields.SetField("radLivingTags", "No");
            }

            acroFields.SetField("radAdditionalRemarksOnBack", reportOptions.additionalRemarksOrDataOnBackOfForm ? "Yes" : "No");

            // =============================================================================

            pdfStamper.FormFlattening = true; // 'true' to make the PDF read-only
            pdfStamper.Close();
            pdfReader.Close();

            var bytes = await File.ReadAllBytesAsync(filledReportFileName);

            return(bytes);
        }
示例#19
0
        void generateThesisPDF()
        {
            string fileNameExisting = @"G:\old.pdf";;
            string fileNameNew      = @"G:\new.pdf";

            using (FileStream existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
                using (FileStream newFileStream = new FileStream(fileNameNew, FileMode.Create))
                {
                    // PDF öffnen
                    PdfReader pdfReader = new PdfReader(existingFileStream);


                    PdfStamper stamper = new PdfStamper(pdfReader, newFileStream);

                    var form      = stamper.AcroFields;
                    var fieldKeys = form.Fields.Keys;
                    foreach (string fieldKey in fieldKeys)
                    {
                        var value = pdfReader.AcroFields.GetField(fieldKey);
                        switch (fieldKey)
                        {
                        case "Name_Prof":
                            form.SetField(fieldKey, "Prof XYZ");
                            break;

                        case "Name":
                            form.SetField(fieldKey, "Murarka");
                            break;

                        case "Vorname":
                            form.SetField(fieldKey, "Pooja");
                            break;

                        case "Matrikel-Nr":
                            //form.SetFieldProperty(fieldKey, "texttype", 12f, null);
                            form.SetField(fieldKey, "900090");
                            break;

                        case "Studiengang":
                            //course of studies
                            form.SetField(fieldKey, "Information Engineering");
                            break;

                        case "Arb_Beginn":
                            form.SetField(fieldKey, "22.03.2018");
                            break;

                        case "Thema":
                            form.SetField(fieldKey, "Blah blah blah blah blah");
                            break;

                        case "Prüfer1":
                            form.SetField(fieldKey, "Mr 1");
                            break;

                        case "Prüfer2":
                            form.SetField(fieldKey, "Mr 2");
                            break;

                        case "öffentl":
                            //published
                            form.SetField(fieldKey, "nein");
                            break;
                        }
                    }

                    // Make text box unworkable (looks like normal text)
                    //stamper.FormFlattening = true;

                    stamper.Close();
                    pdfReader.Close();
                }
        }
示例#20
0
        public void dodajstranicu(int bs, string put1, string put2, int zod, int zdo)
        {
            if (put2 != "" && System.IO.File.Exists(put2) && put1 != "" && System.IO.File.Exists(put1) && zod <= zdo)
            {
                Document document = new Document();

                string tempf = put2.Replace(".pdf", ".bak");
                System.IO.File.Copy(put2, tempf, true);
                //file u koji se ubacuje
                PdfReader reader = new PdfReader(tempf);
                brojstr2 = reader.NumberOfPages;
                //create PdfCopy object
                PdfCopy copy = new PdfCopy(document, new FileStream(put2, FileMode.Create));
                //open the document
                document.Open();
                //zamjenski file
                PdfReader readerz = new PdfReader(put1);
                int       ostalo  = 0;
                if (ostalostr.Text != "")
                {
                    ostalo = Convert.ToInt16(ostalostr.Text);
                }

                // uvijek ispred
                //ako je izabrano da se umece ispred prve stranice
                if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 0)
                {
                    for (int j = zod; j <= zdo; j++)
                    {
                        copy.AddPage(copy.GetImportedPage(readerz, j));
                    }
                    for (int i = 1; i <= brojstr2; i++)
                    {
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                }
                //ako je izabrano da se umece ispred zadnje stranice
                else if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 1)
                {
                    for (int i = 1; i < brojstr2; i++)
                    {
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                    for (int j = zod; j <= zdo; j++)
                    {
                        copy.AddPage(copy.GetImportedPage(readerz, j));
                    }
                    copy.AddPage(copy.GetImportedPage(reader, brojstr2));
                }
                //ako je izabrano da se umece iza prve stranice
                else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 0)
                {
                    copy.AddPage(copy.GetImportedPage(reader, 1));
                    for (int j = zod; j <= zdo; j++)
                    {
                        copy.AddPage(copy.GetImportedPage(readerz, j));
                    }
                    for (int i = 2; i < brojstr2; i++)
                    {
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                }
                //ako je izabrano da se umece iza zadnje stranice
                else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 1)
                {
                    for (int i = 1; i <= brojstr2; i++)
                    {
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                    for (int j = zod; j <= zdo; j++)
                    {
                        copy.AddPage(copy.GetImportedPage(readerz, j));
                    }
                }
                //ako je izabrano da se umece ispred ostalo
                else if (izaispred.SelectedIndex == 0 && prvazadnja.SelectedIndex == 2 && ostalo != 0)
                {
                    for (int i = 1; i <= brojstr2; i++)
                    {
                        if (i == ostalo - 1)
                        {
                            for (int j = zod; j <= zdo; j++)
                            {
                                copy.AddPage(copy.GetImportedPage(readerz, j));
                            }
                        }
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                }
                //ako je izabrano da se umece iza ostalo
                else if (izaispred.SelectedIndex == 1 && prvazadnja.SelectedIndex == 2 && ostalo != 0)
                {
                    for (int i = 1; i <= brojstr2; i++)
                    {
                        if (i == ostalo)
                        {
                            for (int j = zod; j <= zdo; j++)
                            {
                                copy.AddPage(copy.GetImportedPage(readerz, j));
                            }
                        }
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                }
                reader.Close();
                readerz.Close();
                document.Close();
            }
        }
示例#21
0
        public bool Read(string inputFileorFolder, string outputFolder, List <byte[]> imageBytes, List <string> imageNames, ContractParameters settings, ProgressDelegate progress)
        {
            PdfReader        reader   = null;
            PDFImageListener listener = null;

            try
            {
                reader = new PdfReader(inputFileorFolder);
                PdfReaderContentParser parser = new PdfReaderContentParser(reader);

                listener = new PDFImageListener();

                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    listener.PageIndex = i;
                    parser.ProcessContent(i, listener);
                }

                if (settings.CheckResult && reader.NumberOfPages != listener.ImageNames.Count)
                {
                    if (settings.JoinImages)
                    {
                        string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingKO", "Extracting {0} : {1} images for {2} pages - Try to merge !");
                        progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages));

                        ImageJoiner cp = new ImageJoiner();
                        cp.Merge(listener.ImageBytes, listener.ImageNames);

                        msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageMerge", "Merge to {0} new images...");
                        progress(string.Format(msg, cp.NewImageNames.Count));

                        imageBytes.AddRange(cp.NewImageBytes);
                        imageNames.AddRange(cp.NewImageNames);
                    }
                    else
                    {
                        string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageError", "Error extracting {0} : {1} images for {2} pages !!");
                        progress(string.Format(msg, inputFileorFolder, listener.ImageNames.Count, reader.NumberOfPages));
                        throw new Exception("PDF check error");
                    }
                }
                else
                {
                    string msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageCountingOK", "Extracting {0} images in {1} pages");
                    progress(string.Format(msg, listener.ImageNames.Count, reader.NumberOfPages));

                    imageBytes.AddRange(listener.ImageBytes);
                    imageNames.AddRange(listener.ImageNames);

                    msg = CultureManager.Instance.GetLocalization("ByCode", "Convert.ImageExtracted", "{0} images extracted...");
                    progress(string.Format(msg, listener.ImageBytes.Count));
                }
            }
            catch (Exception err)
            {
                LogHelper.Manage("PDFImageReader:Read", err);
                settings.Result = false;
                listener.ImageNames.Clear();
                listener.ImageBytes.Clear();
                return(false);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            return(true);
        }
示例#22
0
        private void btnProcess_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(tbPath.Text))
            {
                return;
            }

            dataGridView1.Rows.Clear();
            Cursor = Cursors.WaitCursor;

            IEnumerable <string> srcFiles;

            if (System.IO.File.GetAttributes(tbPath.Text).HasFlag(FileAttributes.Directory))
            {
                srcFiles = Directory.EnumerateFiles(tbPath.Text, "*.pdf", SearchOption.AllDirectories);
            }
            else
            {
                srcFiles = new string[] { tbPath.Text };
            }

            foreach (var srcFile in srcFiles)
            {
                var        dataGridRowNum = dataGridView1.Rows.Add(new object[] { srcFile, 0 });
                PdfReader  reader         = null;
                PdfStamper pdfStamper     = null;

                try
                {
                    reader = new PdfReader(srcFile);
                    var dstFile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(srcFile),
                                                         System.IO.Path.GetFileNameWithoutExtension(srcFile) + "_clean.pdf");
                    var output = File.Open(dstFile, FileMode.Create);

                    pdfStamper = new PdfStamper(reader, output, reader.PdfVersion, false);
                    pdfStamper.RotateContents = false;

                    var replaceTextProcessor = new TextReplaceStreamEditor(tbReplaceMatch.Text, tbReplaceReplace.Text);
                    if (cbReplaceText.Checked)
                    {
                        for (int i = 1; i <= reader.NumberOfPages; i++)
                        {
                            replaceTextProcessor.EditPage(pdfStamper, i);
                        }
                    }

                    var redactTextProcessor = new TextRedactStreamEditor(tbRedactMatch.Text);
                    if (cbRedactText.Checked)
                    {
                        for (int i = 1; i <= reader.NumberOfPages; i++)
                        {
                            redactTextProcessor.EditPage(pdfStamper, i);
                        }
                        pdfStamper.Writer.SetEncryption(null,
                                                        Encoding.UTF8.GetBytes("ownerPassword"),
                                                        PdfWriter.AllowDegradedPrinting | PdfWriter.AllowPrinting,
                                                        PdfWriter.ENCRYPTION_AES_256);
                    }


                    if (cbRemoveJavascript.Checked && reader.JavaScript != null)
                    {
                        pdfStamper.JavaScript = "";
                    }

                    pdfStamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
                    pdfStamper.SetFullCompression();
                    pdfStamper.Writer.Info?.Clear();
                    pdfStamper.XmpMetadata = new byte[0];
                    pdfStamper.MoreInfo?.Clear();

                    dataGridView1.Rows[dataGridRowNum].ErrorText = "";;
                }
                catch (Exception ex)
                {
                    dataGridView1.Rows[dataGridRowNum].ErrorText = ex.Message;
                }
                finally
                {
                    pdfStamper?.Close();
                    reader?.Close();
                }
            }

            Cursor = Cursors.Arrow;
        }
示例#23
0
        public static void AssinaComCertificado(List <ICrlClient> crlList, byte[] File, out byte[] SignFile, CertSimples cert, int X, int Y, int Pagina, int Rotation, bool AddTimeStamper = true, string urlTimeStamper = "https://freetsa.org/tsr", string timeStampUser = "", string timeStampPass = "", string Reason = "Assinatura Digital", bool AplicaPolitica = false, string MyDigestAlgorithm = "SHA-256", string Contact = "", string Location = "Indústrias Nucleares do Brasil S/A - INB", string Creator = "Assinador da INB", TipoAssinatura Tipo = TipoAssinatura.Normal, string Cargo = "", string CREACRM = "")
        {
            int                Largura       = 140;
            int                Altura        = 63;
            MemoryStream       ArquivoOrigem = new MemoryStream(File);
            PdfReader          pdfReader     = new PdfReader(ArquivoOrigem);
            MemoryStream       signedPdf     = new MemoryStream();
            StampingProperties osp           = new StampingProperties();

            osp.UseAppendMode();
            PdfSigner   objStamper = new PdfSigner(pdfReader, signedPdf, osp);
            ITSAClient  tsaClient  = null;
            IOcspClient ocspClient = null;

            ConfiguraAparencia(objStamper, cert, X, Y, Largura, Altura, Pagina, Rotation, Contact, Reason, Location, Creator, Tipo, Cargo, CREACRM);

            Org.BouncyCastle.X509.X509Certificate       vert       = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert.Certificado);
            Org.BouncyCastle.X509.X509CertificateParser cp         = new Org.BouncyCastle.X509.X509CertificateParser();
            Org.BouncyCastle.X509.X509Certificate[]     Arraychain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.Certificado.RawData) };
            X509CertificateParser objCP = new X509CertificateParser();

            RSACryptoServiceProvider rsa;
            RSACryptoServiceProvider Provider;
            IExternalSignature       externalSignature;

            if (cert.Certificado.PrivateKey is RSACryptoServiceProvider)
            {
                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }
            else
            {
                RSA rsaTeste = cert.Certificado.GetRSAPrivateKey();

                rsa               = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                Provider          = (RSACryptoServiceProvider)cert.Certificado.PrivateKey;
                externalSignature = new AsymmetricAlgorithmSignature(Provider, MyDigestAlgorithm);
            }

            if (AddTimeStamper)
            {
                tsaClient = new TSAClientBouncyCastle(urlTimeStamper, timeStampUser, timeStampPass);
            }
            OCSPVerifier ocspVerifier = new OCSPVerifier(null, null);

            ocspClient = new OcspClientBouncyCastle(ocspVerifier);
            if (AplicaPolitica)
            {
                SignaturePolicyInfo spi = getPolitica();
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES, spi);
            }
            else
            {
                objStamper.SignDetached(externalSignature, Arraychain, crlList, ocspClient, tsaClient, 0, PdfSigner.CryptoStandard.CADES);
            }

            try
            {
                SignFile = signedPdf.ToArray();
                try
                {
                    signedPdf.Close();
                    signedPdf.Dispose();
                }
                catch { }
            }
            catch (Exception ex)
            {
                SignFile = null;
                throw ex;
            }
            try
            {
                signedPdf.Close();
            }
            catch (Exception ex) { }
            pdfReader.Close();
        }
示例#24
0
        private void AnalyzeFilesAction(Object o)
        {
            EnDsCommands(CommandSet.csStop);

            ProgressPosition = Items.Count();
            ProgressMax      = Items.Count();
            ProgressStatus   = "Running...";

            foreach (ItemType file in Items)
            {
                Interlocked.Increment(ref TasksCounter);
                Task task = new Task(() =>
                {
                    file.Status = StatusType.stInProgress;

                    PdfFunctions pdfFunctions           = new PdfFunctions();
                    DateTimeFunctions dateTimeFunctions = new DateTimeFunctions();

                    PdfReader pdfFile = null;
                    try
                    {
                        string value = "";

                        if (file.TypeOfItem == PdfLocation.plFile)
                        {
                            pdfFile = pdfFunctions.GetPdf(file.FileName);
                        }
                        else
                        {
                            throw new NotImplementedException();
                        }

                        if (pdfFile != null)
                        {
                            //
                            file.FileLength = pdfFile.FileLength;

                            file.Encrypted = pdfFile.IsEncrypted();

                            file.NumberOfPages = pdfFile.NumberOfPages;

                            //
                            value = pdfFunctions.GetValue(pdfFile, "Author");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.Author = value;
                            }

                            //
                            value = pdfFunctions.GetValue(pdfFile, "Title");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.Title = value;
                            }

                            //
                            value = pdfFunctions.GetValue(pdfFile, "Producer");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.Producer = value;
                            }

                            //
                            value = pdfFunctions.GetValue(pdfFile, "EBX_PUBLISHER");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.Publisher = value;
                            }

                            //
                            value = pdfFunctions.GetValue(pdfFile, "CreationDate");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.CreationDate = dateTimeFunctions.FixDateTime(value);
                            }

                            //
                            value = pdfFunctions.GetValue(pdfFile, "ModDate");

                            if (!String.IsNullOrEmpty(value))
                            {
                                file.ModificationDate = dateTimeFunctions.FixDateTime(value);
                            }

                            file.Status = StatusType.stDone;
                        }
                        else
                        {
                            file.Status = StatusType.stError;
                        }
                    }
                    finally
                    {
                        pdfFile?.Close();
                        pdfFile?.Dispose();

                        GC.Collect();
                    }

                    Interlocked.Decrement(ref TasksCounter);
                    TaskCompleted();
                });
                task.Start();
            }
        }
示例#25
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            try
            {
                using (var oldFile = GetBaseFile())
                {
                    using (var newFile = new MemoryStream())
                    {
                        PdfReader reader   = new PdfReader(oldFile);
                        Rectangle size     = reader.GetPageSizeWithRotation(1);
                        Document  document = new Document(size);

                        // open the writer
                        PdfWriter writer = PdfWriter.GetInstance(document, newFile);
                        document.Open();

                        //// the pdf content
                        //PdfContentByte cb = writer.DirectContent;

                        //// select the font properties
                        //BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                        //cb.SetColorFill(BaseColor.DARK_GRAY);
                        //cb.SetFontAndSize(bf, 8);

                        //// write the text in the pdf content
                        //cb.BeginText();
                        //string text = "Some random blablablabla...";
                        //// put the alignment and coordinates here
                        //cb.ShowTextAligned(1, text, 520, 640, 0);
                        //cb.EndText();
                        //cb.BeginText();
                        //text = "Other random blabla...";
                        //// put the alignment and coordinates here
                        //cb.ShowTextAligned(2, text, 100, 200, 0);
                        //cb.EndText();

                        //// create the new page and add it to the pdf
                        //PdfImportedPage page = writer.GetImportedPage(reader, 1);
                        //cb.AddTemplate(page, 0, 0);

                        var byteResult = ReadFully(newFile);
                        var result     = new FileContentResult(byteResult, "application/pdf")
                        {
                            FileDownloadName = "Export.pdf"
                        };

                        // close the streams and voilá the file should be changed :)
                        document.Close();
                        newFile.Close();
                        writer.Close();
                        reader.Close();

                        return(result);
                    }
                }

                return(null);
                //var byteResult = ReadFully(newfile);
                //var result = new FileContentResult(byteResult, "application/pdf")
                //{
                //    FileDownloadName = "Export.pdf"
                //};
            }
            catch (Exception e)
            {
                return(new BadRequestObjectResult(e.Message));
            }
            //log.LogInformation("C# HTTP trigger function processed a request.");

            //string name = req.Query["name"];

            //string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            //dynamic data = JsonConvert.DeserializeObject(requestBody);
            //name = name ?? data?.name;

            //return name != null
            //    ? (ActionResult)new OkObjectResult($"Hello, {name}")
            //    : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
示例#26
0
        public bool WatermarkPDF(string SourcePdfPath, string OutputPdfPath, string WatermarkImageUrl, int positionX, int positionY, int WatermarkHeight, int WatermarkWidth, out string msg, string XMAdd)
        {
            try
            {
                PdfReader      reader = new PdfReader(SourcePdfPath);
                PdfStamper     stamp  = new PdfStamper(reader, new FileStream(OutputPdfPath, FileMode.Create));
                int            n      = reader.NumberOfPages;
                int            i      = 0;
                PdfContentByte under;
                int            WatermarkWidth2 = WatermarkWidth;
                WatermarkWidth = WatermarkWidth / n;
                //这个地方要注意,是根据页数来动态加载图片地址,有几页就加载几页的图片
                string WatermarkPath  = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/合同备案公章" + n + "/");
                string WatermarkPath2 = "";
                while (i < n)
                {
                    i++;
                    WatermarkPath2 = WatermarkPath + i + ".gif";
                    iTextSharp.text.Image im = iTextSharp.text.Image.GetInstance(WatermarkPath2);
                    im.SetAbsolutePosition(positionX, positionY);
                    im.ScaleAbsolute(WatermarkWidth, WatermarkHeight);

                    under = stamp.GetUnderContent(i);
                    under.AddImage(im, true);
                    //还要在最后一页加盖公章,如果是江阴、宜兴的,要同时加盖他们对应的公章,然后再加上市建设局的公章
                    if (i == n)//表示是最后一页
                    {
                        string imgPath             = "";
                        string imgHYPath           = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/核验章.png");
                        iTextSharp.text.Image imHY = iTextSharp.text.Image.GetInstance(imgHYPath);

                        imHY.ScaleAbsolute(100, 50);
                        //江阴/宜兴
                        if (XMAdd == "320281")
                        {
                            imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/江阴合同备案公章.gif");
                            iTextSharp.text.Image imQX = iTextSharp.text.Image.GetInstance(imgPath);
                            imQX.SetAbsolutePosition(400, 350);
                            imQX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight);

                            under = stamp.GetUnderContent(i);
                            under.AddImage(imQX, true);

                            //加核验章
                            imHY.SetAbsolutePosition(200, 390);
                            under.AddImage(imHY, true);
                        }
                        else if (XMAdd == "320282")
                        {
                            imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/宜兴合同备案公章.gif");
                            iTextSharp.text.Image imQX = iTextSharp.text.Image.GetInstance(imgPath);
                            imQX.SetAbsolutePosition(400, 350);
                            imQX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight);

                            under = stamp.GetUnderContent(i);
                            under.AddImage(imQX, true);

                            //加核验章
                            imHY.SetAbsolutePosition(200, 390);
                            under.AddImage(imHY, true);
                        }

                        //无锡市
                        imgPath = Server.MapPath(Request.ApplicationPath + "/HTProject/Pages/Images/合同备案公章.gif");
                        iTextSharp.text.Image imWX = iTextSharp.text.Image.GetInstance(imgPath);
                        imWX.SetAbsolutePosition(400, 150);
                        imWX.ScaleAbsolute(WatermarkWidth2, WatermarkHeight);

                        under = stamp.GetUnderContent(i);
                        under.AddImage(imWX, true);

                        //加核验章
                        imHY.SetAbsolutePosition(200, 190);
                        under.AddImage(imHY, true);
                    }
                }
                stamp.Close();
                reader.Close();
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                return(false);
            }
            msg = "加水印成功!";
            return(true);
        }
示例#27
0
        public void CreatePdf()
        {
            if (!IsValidPath())
            {
                throw new DirectoryNotFoundException("Invalid output path");
            }

            // converting data to ours desired format.
            var Result0 = MakeGroup();

            // group by warrant
            var Result1 = Result0.GroupBy(u => u.WarrantNumber).Select(s => s.ToList()).ToList();

            var  OutPutPdfFile     = string.Empty;
            var  TempOutPutPdfFile = string.Empty;
            bool IsPdfExist        = false;

            FileStream fs = null;

            // loop i for each warrant
            foreach (var i in Result1)
            {
                var ParentOutDirName = OutPutPath + i.FirstOrDefault().DelivaryLocation;

                if (!Directory.Exists(ParentOutDirName))
                {
                    Directory.CreateDirectory(ParentOutDirName);
                }

                OutPutPdfFile     = ParentOutDirName + "\\" + i.FirstOrDefault().WarrantNumber + ".pdf";
                TempOutPutPdfFile = CreateTempPathFile(OutPutPdfFile);

                var writer = CreateWriter(OutPutPdfFile, fs, out IsPdfExist);

                // loop j, object inside each warrant in i
                foreach (var j in i)
                {
                    using (PdfReader Reader = new PdfReader(j.PdfFileName))
                    {
                        Reader.ConsolidateNamedDestinations();

                        Reader.SelectPages(j.PageNumbers);

                        writer.AddPages(Reader);

                        Reader.Close();
                    }
                }

                writer.Close();

                // if pdf file exist, just rename the file.
                if (IsPdfExist)
                {
                    System.IO.File.Move(TempOutPutPdfFile, OutPutPdfFile);
                }

                // if the pdf file is empty, delete it.
                XbsPdfUtility.CheckFileIsEmpty(OutPutPdfFile, fs);
            }
        }
示例#28
0
        List <string> getListMail(string ProductCode)
        {
            NVCoKhi = "";
            NVDien  = "";
            NVDT    = "";

            DocUtils.InitFTPQLSX();
            List <string> listMailAddress = new List <string>();

            if (ProductCode.StartsWith("TPAD."))
            {
                #region Get Address of Điện
                string personDien = "";
                try
                {
                    string fdfFileName = string.Format("Thietke.Dn\\{0}\\{1}.Dn\\PRD.{1}\\{1}.Dn.pdf", ProductCode.Substring(0, 6), ProductCode);
                    if (DocUtils.CheckExits(fdfFileName))
                    {
                        DocUtils.DownloadFile("D:/", Path.GetFileName(fdfFileName), fdfFileName);
                        PdfReader reader1 = new PdfReader("D:/" + Path.GetFileName(fdfFileName));
                        personDien = reader1.Info["Author"];
                        reader1.Close();
                        File.Delete("D:/" + Path.GetFileName(fdfFileName));
                    }
                    else
                    {
                        fdfFileName = string.Format("Thietke.Dn/{0}/{1}.Dn/{1}.Dn.pdf", ProductCode.Substring(0, 6), ProductCode);
                        if (DocUtils.CheckExits(fdfFileName))
                        {
                            DocUtils.DownloadFile("D:/", Path.GetFileName(fdfFileName), fdfFileName);
                            PdfReader reader1 = new PdfReader("D:/" + Path.GetFileName(fdfFileName));
                            personDien = reader1.Info["Author"];
                            reader1.Close();
                            File.Delete("D:/" + Path.GetFileName(fdfFileName));
                        }
                    }

                    if (personDien != "")
                    {
                        NVDien     = personDien;
                        personDien = getAddressMail(personDien);
                        if (personDien != "")
                        {
                            listMailAddress.Add(getAddressMail(personDien) + "@tpa.com.vn");
                        }
                    }
                }
                catch
                {
                }
                #endregion

                string _serverPathCK = "Thietke.Ck/" + ProductCode.Substring(0, 6) + "/" + ProductCode + ".Ck/" + "/VT." + ProductCode + ".xlsm";

                try
                {
                    if (DocUtils.CheckExits(_serverPathCK))
                    {
                        #region Get Address of Module
                        if (File.Exists("D:/VT." + ProductCode + ".xlsm"))
                        {
                            File.Delete("D:/VT." + ProductCode + ".xlsm");
                        }
                        //Download file danh mục vật tư
                        DocUtils.DownloadFile("D:/", "VT." + ProductCode + ".xlsm", _serverPathCK);
                        DataTable dtDMVT = TextUtils.ExcelToDatatable("D:/VT." + ProductCode + ".xlsm", "DMVT");
                        File.Delete("D:/VT." + ProductCode + ".xlsm");

                        NVCoKhi = dtDMVT.Rows[2]["F3"].ToString();
                        string ck = getAddressMail(dtDMVT.Rows[2]["F3"].ToString());
                        if (ck != "")
                        {
                            if (!listMailAddress.Contains(ck + "@tpa.com.vn"))
                            {
                                listMailAddress.Add(ck + "@tpa.com.vn");
                            }
                        }
                        #endregion

                        try
                        {
                            DataTable dtDT = dtDMVT.Select("F4 like '%PCB%'").CopyToDataTable();
                            if (dtDT.Rows.Count > 0)
                            {
                                string dienTuPath = "Thietke.Dt/PCB/";
                                foreach (DataRow item in dtDT.Rows)
                                {
                                    #region Get address of PCB
                                    string code = item["F4"].ToString();
                                    if (code != "")
                                    {
                                        string pathDMVT_DT = dienTuPath + "/" + code + "/PRD." + code + "/VT." + code + ".xls";

                                        if (DocUtils.CheckExits(pathDMVT_DT))
                                        {
                                            try
                                            {
                                                DocUtils.DownloadFile("D:/", Path.GetFileName(pathDMVT_DT), pathDMVT_DT);
                                                DataTable dtDMVT_DT = TextUtils.ExcelToDatatable("D:/VT." + code + ".xls", "DMVT");
                                                File.Delete("D:/VT." + code + ".xls");
                                                NVDT += dtDMVT_DT.Rows[2]["F3"].ToString() + " - " + code + ",";
                                                string dt = getAddressMail(dtDMVT_DT.Rows[2]["F3"].ToString());
                                                if (dt != "")
                                                {
                                                    string personDT = dt + "@tpa.com.vn";
                                                    if (!listMailAddress.Contains(personDT))
                                                    {
                                                        listMailAddress.Add(personDT);
                                                    }
                                                }
                                            }
                                            catch (Exception)
                                            {
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
                catch
                {
                }
            }

            if (ProductCode.StartsWith("PCB."))
            {
                #region Get address of PCB
                string dienTuPath = "Thietke.Dt/PCB/";
                string code       = ProductCode;
                if (code != "")
                {
                    string pathDMVT_DT = dienTuPath + "/" + code + "/PRD." + code + "/VT." + code + ".xls";

                    if (DocUtils.CheckExits(pathDMVT_DT))
                    {
                        try
                        {
                            DocUtils.DownloadFile("D:/", Path.GetFileName(pathDMVT_DT), pathDMVT_DT);
                            DataTable dtDMVT_DT = TextUtils.ExcelToDatatable("D:/VT." + code + ".xls", "DMVT");
                            File.Delete("D:/VT." + code + ".xls");
                            NVDT += dtDMVT_DT.Rows[2]["F3"].ToString() + " - " + code + ",";
                            string dt = getAddressMail(dtDMVT_DT.Rows[2]["F3"].ToString());
                            if (dt != "")
                            {
                                string personDT = dt + "@tpa.com.vn";
                                if (!listMailAddress.Contains(personDT))
                                {
                                    listMailAddress.Add(personDT);
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
                #endregion
            }

            return(listMailAddress);
        }
示例#29
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();
            }
        }
示例#30
0
        public TestCreatePDF()
        {
            filenameBlank = filename.Replace(".", "_Blank.");

            FileStream fs = new System.IO.FileStream(filenameBlank, System.IO.FileMode.Create);

            writer = PdfWriter.GetInstance(doc, fs);
            doc.Open();
            cb = writer.DirectContent;
            Rectangle rect = new Rectangle(50, 700, 300, 600)
            {
                BorderWidth = .25f,
                Border      = 255
            };

            cb.Rectangle(rect);
            cb.Stroke();


            //Add text
            Font   font3  = new Font(FontFactory.GetFont(FontFactory.HELVETICA, 1000, Font.NORMAL, BaseColor.BLACK));
            Chunk  chunk  = new Chunk("Roopesh", new Font(FontFactory.GetFont(FontFactory.HELVETICA, 10, Font.NORMAL, BaseColor.BLUE)));
            Phrase phrase = new Phrase(chunk);

            ColumnText ctext = new ColumnText(cb);

            ctext.SetSimpleColumn(rect.Left + 5, rect.Top, rect.Right, rect.Bottom);
            ctext.SetText(phrase);
            ctext.Go();

            this.doc.Close();

            GetReader();

            //Add TextBox
            rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 100);
            TextField tf = new TextField(writer, rect, "text1")
            {
                Alignment   = Element.ALIGN_LEFT | Element.ALIGN_TOP,
                BorderColor = BaseColor.BLACK,
                BorderStyle = PdfBorderDictionary.STYLE_SOLID,
                Text        = "TextField"
            };

            stamper.AddAnnotation(tf.GetTextField(), 1);

            //Add Radio
            rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 25);
            PdfFormField group = PdfFormField.CreateRadioButton(writer, true);

            group.FieldName = "grp1";
            for (int i = 0; i < 5; i++)
            {
                Rectangle       radioRect  = new Rectangle(rect.Left + i * 25, rect.Top, rect.Left + (i + 1) * 25, rect.Bottom);
                RadioCheckField radioField = new RadioCheckField(writer, radioRect, "chk" + i.ToString(), i.ToString())
                {
                    BorderColor = GrayColor.BLACK,
                    CheckType   = RadioCheckField.TYPE_CIRCLE,
                    BorderStyle = PdfBorderDictionary.STYLE_SOLID
                };
                group.AddKid(radioField.RadioField);
            }
            //group.SetAdditionalActions(PdfName.E, PdfAction.JavaScript("app.alert(validate);",writer));
            stamper.AddAnnotation(group, 1);

            //Add submit button
            rect = new Rectangle(rect.Left, rect.Top - 100, rect.Right, rect.Bottom - 25);
            PushbuttonField button = new PushbuttonField(writer, rect, "postSubmit")
            {
                FontSize        = 8,
                BackgroundColor = BaseColor.LIGHT_GRAY,
                BorderColor     = GrayColor.BLACK,
                BorderWidth     = 1f,
                BorderStyle     = PdfBorderDictionary.STYLE_BEVELED,
                TextColor       = GrayColor.GREEN,
                Text            = "Submit",
                Visibility      = PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT
            };
            PdfFormField field      = button.Field;
            String       javascript = "validate();";

            field.Action = PdfAction.JavaScript(javascript, writer);

            //field.Action = PdfAction.CreateSubmitForm( @"*****@*****.**", null, PdfAction.SUBMIT_HTML_FORMAT | PdfAction.SUBMIT_INCLUDE_NO_VALUE_FIELDS);
            stamper.AddAnnotation(field, 1);
            PdfAcroForm f = new PdfAcroForm(writer);


            //Add common Javascript code
            writer.AddJavaScript("var requiredFields = ['text1', 'grp1'];");
            string validateFunction = "function validate () { " +
                                      " for (i=0; i<requiredFields.length; i++) {" +
                                      " var grp = this.getField(requiredFields[i]);  if (!grp || grp.value === null || grp.value == ''|| grp.value=='Off') { " +
                                      " app.alert('please select this '+ requiredFields[i]); return false; }}" +
                                      "return true}";

            writer.AddJavaScript(validateFunction);


            //Close all the streams
            stamper.Close();
            reader.Close();
            doc.Close();
        }
示例#31
-8
 public static string pdfText(string path)
 {
     PdfReader reader = new PdfReader(path);
     string text = string.Empty;
     for(int page = 1; page <= reader.NumberOfPages; page++)
     {
         text += PdfTextExtractor.GetTextFromPage(reader,page);
     }
     reader.Close();
     return text;
 }