/**
  * The verification constructor. This class should only be created with
  * PdfStamper.getLtvVerification() otherwise the information will not be
  * added to the Pdf.
  * @param stp the PdfStamper to apply the validation to
  */
 public LtvVerification(PdfStamper stp)
 {
     this.stp = stp;
     writer = stp.Writer;
     reader = stp.Reader;
     acroFields = stp.AcroFields;
 }
 /**
  * Processes a properly tagged PDF form.
  * @param reader the PdfReader instance holding the PDF
  * @throws IOException
  * @throws DocumentException 
  */
 virtual public void Process(PdfReader reader, Stream os) {
     int n = reader.NumberOfPages;
     // getting the root dictionary
     PdfDictionary catalog = reader.Catalog;
     // flattening means: remove AcroForm
     catalog.Remove(PdfName.ACROFORM);
     // read the structure and create a parser
     StructureItems items = new StructureItems(reader);
     MCParser parser = new MCParser(items);
     // loop over all pages
     for(int i = 1; i <= n; i++) {
         // make one stream of a content stream array
         reader.SetPageContent(i, reader.GetPageContent(i));
         // parse page
         parser.Parse(reader.GetPageN(i), reader.GetPageOrigRef(i));
     }
     reader.RemoveUnusedObjects();
     // create flattened file
     PdfStamper stamper = new PdfStamper(reader, os);
     items.WriteParentTree(stamper.Writer);
     stamper.Close();
 }
        public void DrawPeptideSpectralMatchPdf(MsDataScan msDataScan, PsmFromTsv psm, string fileName, bool redraw)
        {
            var properties = psm.GetType().GetProperties();
            var pdfModel   = DrawPdf(msDataScan, properties, psm, redraw);

            string tempPath        = Path.Combine(Path.GetDirectoryName(fileName), "sequence.pdf");
            string baseSeqTempPath = Path.Combine(Path.GetDirectoryName(fileName), "annotation.png");

            // exports plot to pdf
            using (var stream = File.Create(tempPath))
            {
                PdfExporter pdf = new PdfExporter {
                    Width = 800, Height = 500
                };
                pdf.Export(pdfModel, stream);
            }

            // adds base seq annotation to pdf
            using (Stream inputPdfStream = new FileStream(tempPath, FileMode.Open, FileAccess.Read, FileShare.Read))
                using (Stream inputImageStream = new FileStream(baseSeqTempPath, FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (Stream outputPdfStream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
                    {
                        var reader         = new PdfReader(inputPdfStream);
                        var stamper        = new PdfStamper(reader, outputPdfStream);
                        var pdfContentByte = stamper.GetOverContent(1);

                        var image = iTextSharp.text.Image.GetInstance(inputImageStream);
                        image.ScaleAbsoluteHeight(500);
                        image.ScaleAbsoluteWidth(500);
                        image.SetAbsolutePosition(95, 190);
                        pdfContentByte.AddImage(image);
                        stamper.Close();
                    }

            File.Delete(tempPath);
            File.Delete(baseSeqTempPath);
        }
示例#4
0
        private static void addWatermark(string inPdfFile, string outPdfFile)
        {
            var pdfReader  = new PdfReader(inPdfFile);
            var outStream  = new FileStream(outPdfFile, FileMode.Create);
            var pdfStamper = new PdfStamper(pdfReader, outStream);
            var total      = pdfReader.NumberOfPages + 1;
            var pageSize   = pdfReader.GetPageSize(1);
            var width      = pageSize.Width;
            var height     = pageSize.Height;

            //var font = TestUtils.GetUnicodeFont("Tahoma", TestUtils.GetTahomaFontPath(), 10, Font.BOLD, BaseColor.Black);
            //var font = TestUtils.GetUnicodeFont("FangSong", TestUtils.GetFontPath("simfang.ttf"), 10, Font.BOLD, BaseColor.Black);
            var font = BaseFont.CreateFont(TestUtils.GetFontPath("simfang.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            var gs   = new PdfGState();

            for (var i = 1; i < total; i++)
            {
                var content = pdfStamper.GetOverContent(i);
                gs.FillOpacity = 0.3f;
                content.SetGState(gs);
                content.BeginText();
                content.SetColorFill(BaseColor.LightGray);
                content.SetFontAndSize(font, 100);
                content.SetTextMatrix(0, 0);
                content.ShowTextAligned(
                    Element.ALIGN_CENTER,
                    "WaterMark Name ...",
                    (width / 2) - 50,
                    (height / 2) - 50,
                    55);
                content.EndText();
            }

            pdfStamper.Close();
            pdfReader.Close();
            outStream.Dispose();
        }
示例#5
0
        /*public void Verify(string pdfFile, Stream fileStream)
         * {
         *
         *  //KeyStore kall = PdfPKCS7.loadCacertsKeyStore();
         *  var parser = new X509CertificateParser(fileStream);
         *  var certifi = parser.ReadCertificate ();
         *  fileStream.Dispose();
         *
         *  string pathToFiles = HttpContext.Current.Server.MapPath("~/UploadFile/output/ForCekTandaTangan.pdf");
         *  PdfReader reader = new PdfReader(pathToFiles);
         *  AcroFields af = reader.AcroFields;
         *  var names = af.GetSignatureNames();
         *  if (names.Count == 0)
         *  {
         *      System.Diagnostics.Debug.WriteLine("Tidak ada ttdnya");
         *  }
         *  else
         *  {
         *      System.Diagnostics.Debug.WriteLine("IKI lo TTD ne yooow");
         *  }
         *  foreach (string name in names)
         *  {
         *      if (!af.SignatureCoversWholeDocument(name))
         *      {
         *          System.Diagnostics.Debug.WriteLine("The signature: {0} does not covers the whole document.", name);
         *      }
         *      System.Diagnostics.Debug.WriteLine("Signature Name: " + name);
         *      System.Diagnostics.Debug.WriteLine("Signature covers whole document: " + af.SignatureCoversWholeDocument(name));
         *      System.Diagnostics.Debug.WriteLine("Document revision: " + af.GetRevision(name));
         *
         *      PdfPKCS7 pk = af.VerifySignature(name);
         *      var cal = pk.SignDate;
         *      var pkc = pk.Certificates;
         *      // TimeStampToken ts = pk.TimeStampToken;
         *      if (!pk.Verify())
         *      {
         *          System.Diagnostics.Debug.WriteLine("The signature could not be verified");
         *      } else
         *      {
         *          System.Diagnostics.Debug.WriteLine("Name signature: " + pk.SignName);
         *          System.Diagnostics.Debug.WriteLine("Reason signature: " + pk.Reason);
         *          System.Diagnostics.Debug.WriteLine("Location signature: " + pk.Location);
         *          System.Diagnostics.Debug.WriteLine("Date signature: " + pk.SignDate);
         *          System.Diagnostics.Debug.WriteLine("Version signature: " + pk.SigningInfoVersion);
         *          System.Diagnostics.Debug.WriteLine("Sertificate signature: " + pk.SigningCertificate);
         *      }
         *
         *      //IList<VerificationException>[] fails = PdfPKCS7.VerifyCertificates(pkc, new X509Certificate[] { certifi }, null, cal);
         *      //Object[] fails = PdfPKCS7.VerifyCertificates(pkc, new X509Certificate[] { }, null, cal);
         *      //if (fails != null)
         *      //{
         *      //    System.Diagnostics.Debug.WriteLine("The file is not signed using the specified key-pair.");
         *      //}
         *  }
         * }*/
        //To disable Multi signatures uncomment this line : every new signature will invalidate older ones ! line 251
        //PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0');

        public void Sign(string SigReason, string SigContact,
                         string SigLocation, string pic, bool visible, int posX, int posY)
        {
            //Activate MultiSignatures
            PdfReader  reader = new PdfReader(this.inputPDF);
            PdfStamper st     = PdfStamper.CreateSignature(reader,
                                                           new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write),
                                                           '\0', null, true);

            //iTextSharp.text.Image sigImg = iTextSharp.text.Image.GetInstance(pic);
            Image sigImg = Image.GetInstance(pic);

            // MAX_WIDTH, MAX_HEIGHT
            sigImg.ScaleToFit(150, 50);
            // Set signature position on page
            sigImg.SetAbsolutePosition(posX, 840 - posY);
            // Add signatures to desired page
            PdfContentByte over = st.GetOverContent(1);

            over.AddImage(sigImg);

            st.MoreInfo    = this.metadata.getMetaData();
            st.XmpMetadata = this.metadata.getStreamedMetaData();
            PdfSignatureAppearance sap = st.SignatureAppearance;

            sap.SetCrypto(this.myCert.Akp, this.myCert.Chain,
                          null, PdfSignatureAppearance.WINCER_SIGNED);
            sap.Reason   = SigReason;
            sap.Contact  = SigContact;
            sap.Location = SigLocation;
            if (visible)
            {
                sap.SetVisibleSignature(
                    new Rectangle(posX, 840 - posY, posX + 150, (840 - posY) + 50), 1, null);
            }
            st.Close();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string workingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            string inputFile     = Path.Combine(workingFolder, "Input.pdf");
            string outputFile    = Path.Combine(workingFolder, "Output.pdf");

            PdfReader reader = new PdfReader(inputFile);

            using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None)){
                using (PdfStamper stamper = new PdfStamper(reader, fs))
                {
                    Dictionary <String, String> info = reader.Info;
                    info.Add("Title", "Hello World stamped");
                    info.Add("Subject", "Hello World with changed metadata");
                    info.Add("Keywords", "iText in Action, PdfStamper");
                    info.Add("Creator", "Silly standalone example");
                    info.Add("Author", "Also Bruno Lowagie");
                    stamper.MoreInfo = info;
                    stamper.Close();
                }
            }

            this.Close();
        }
示例#7
0
        public void Sign(string SigReason, string SigContact, string SigLocation, bool visible)
        {
            PdfReader reader = new PdfReader(this.inputPDF);
            //Activate MultiSignatures
            PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0', null, true);

            //To disable Multi signatures uncomment this line : every new signature will invalidate older ones !
            //PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write), '\0');

            st.MoreInfo    = this.metadata.getMetaData();
            st.XmpMetadata = this.metadata.getStreamedMetaData();
            PdfSignatureAppearance sap = st.SignatureAppearance;

            sap.SetCrypto(this.myCert.Akp, this.myCert.Chain, null, PdfSignatureAppearance.WINCER_SIGNED);
            sap.Reason   = SigReason;
            sap.Contact  = SigContact;
            sap.Location = SigLocation;
            if (visible)
            {
                sap.SetVisibleSignature(new iTextSharp.text.Rectangle(100, 100, 250, 150), 1, null);
            }

            st.Close();
        }
示例#8
0
        public void Sign(String keystore, int level, String src, String name, String dest)
        {
            Pkcs12Store store = new Pkcs12Store(new FileStream(keystore, FileMode.Open), PASSWORD);
            String      alias = "";
            ICollection <X509Certificate> chain = new List <X509Certificate>();

            // searching for private key
            foreach (string al in store.Aliases)
            {
                if (store.IsKeyEntry(al) && store.GetKey(al).Key.IsPrivate)
                {
                    alias = al;
                    break;
                }
            }
            AsymmetricKeyEntry pk = store.GetKey(alias);

            foreach (X509CertificateEntry c in store.GetCertificateChain(alias))
            {
                chain.Add(c.Certificate);
            }
            RsaPrivateCrtKeyParameters parameters = pk.Key as RsaPrivateCrtKeyParameters;

            PdfReader  reader  = new PdfReader(src);
            FileStream os      = new FileStream(dest, FileMode.Create);
            PdfStamper stamper = PdfStamper.CreateSignature(reader, os, '\0', null, true);
            // Creating the appearance
            PdfSignatureAppearance appearance = stamper.SignatureAppearance;

            appearance.SetVisibleSignature(name);
            appearance.CertificationLevel = level;
            // Creating the signature
            IExternalSignature pks = new PrivateKeySignature(parameters, "SHA-256");

            MakeSignature.SignDetached(appearance, pks, chain, null, null, null, 0, CryptoStandard.CMS);
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string inputFile  = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "input.pdf");
            string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "output.pdf");

            PdfReader pdfReader = new PdfReader(inputFile);

            using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                using (PdfStamper stamper = new PdfStamper(pdfReader, fs))
                {
                    int PageCount = pdfReader.NumberOfPages;
                    for (int x = 1; x <= PageCount; x++)
                    {
                        PdfContentByte            cb        = stamper.GetOverContent(x);
                        iTextSharp.text.Rectangle rectangle = pdfReader.GetPageSizeWithRotation(x);
                        rectangle.BackgroundColor = BaseColor.BLACK;
                        cb.Rectangle(rectangle);
                    }
                }
            }

            this.Close();
        }
示例#10
0
        private void SaveReaderToOutput()
        {
            var sourceFolder = Path.GetDirectoryName(fileName);

            if (!Directory.Exists(sourceFolder + "\\Output"))
            {
                Directory.CreateDirectory(sourceFolder + "\\Output");
            }

            var outfileName = sourceFolder + "\\Output\\" + Path.GetFileName(fileName);


            using (FileStream fs = new FileStream(outfileName, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                using (PdfStamper stamper = new PdfStamper(_reader, fs))
                {
                }
            }

            if (dffOpenOutputInAdobe.Checked)
            {
                Process.Start(outfileName);
            }
        }
示例#11
0
        public static void GetChPdf(string templatePath, string newFilePath, string iTextAsianCmapsPath, Dictionary <string, string> parameters)
        {
            PdfReader  pdfReader  = new PdfReader(templatePath);
            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create));
            //获取域的集合;
            AcroFields pdfFormFields = pdfStamper.AcroFields;


            //BaseFont.AddToResourceSearch(iTextAsianCmapsPath);
            //创建中文字体,第一个参数是中文字体的路径,第二个参数表示文字方向水平,第三个貌似是字体嵌入PDF文件;
            BaseFont baseFT = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

            foreach (KeyValuePair <string, string> parameter in parameters)
            {
                //要输入中文就要设置域的字体;
                pdfFormFields.SetFieldProperty(parameter.Key, "textfont", baseFT, null);
                //为需要赋值的域设置值;
                pdfFormFields.SetField(parameter.Key, parameter.Value);
            }
            //这句很重要,如果为false那么生成的PDF文件还能编辑,一定要设为true;
            pdfStamper.FormFlattening = true;
            pdfStamper.Close();
            pdfReader.Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(fileToOpen))
            {
                return;
            }

            byte[] bytes = File.ReadAllBytes(fileToOpen);
            iTextSharp.text.Font blackFont = FontFactory.GetFont("Arial", 12, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);
            using (MemoryStream stream = new MemoryStream())
            {
                PdfReader reader = new PdfReader(bytes);
                using (PdfStamper stamper = new PdfStamper(reader, stream))
                {
                    int pages = reader.NumberOfPages;
                    for (int i = 1; i <= pages; i++)
                    {
                        ColumnText.ShowTextAligned(stamper.GetOverContent(i), Element.ALIGN_RIGHT, new Phrase(i.ToString(), blackFont), 568f, 15f, 0);
                    }
                }
                bytes = stream.ToArray();
            }
            File.WriteAllBytes(@"L:\Users\user\Documents\PDFnummerieren\PDF1.pdf", bytes);
        }
示例#13
0
        /// <summary>
        /// Fills an AcroForm automatically and then Converts the selected page number of an existing pdf template file to an instance of iTextSharp.text.Image
        /// </summary>
        /// <param name="pdfWriter">PdfWriter object</param>
        /// <param name="pdfTemplateFilePath">pdf file path</param>
        /// <param name="data">Row's data</param>
        /// <param name="onFillAcroForm">FillAcroForm Formula</param>
        /// <param name="fonts">Controls fonts</param>
        /// <param name="pageNumber">selected page number of an existing pdf template file</param>
        /// <returns>An instance of iTextSharp.text.Image</returns>
        public static iTextSharp.text.Image GetITextSharpImageFromAcroForm(
            this PdfWriter pdfWriter,
            string pdfTemplateFilePath,
            IList <CellData> data,
            Action <IList <CellData>, AcroFields, PdfStamper> onFillAcroForm,
            IList <iTextSharp.text.Font> fonts,
            int pageNumber = 1)
        {
            using (var writerStream = new MemoryStream())
            {
                var pdfReader = new PdfReader(pdfTemplateFilePath);
                using (var stamper = new PdfStamper(pdfReader, writerStream))
                {
                    foreach (var font in fonts)
                    {
                        stamper.AcroFields.AddSubstitutionFont(font.BaseFont);
                    }

                    var form = stamper.AcroFields;
                    form.GenerateAppearances = true;
                    onFillAcroForm.Invoke(data, form, stamper);

                    stamper.FormFlattening = true;

                    stamper.Writer.CloseStream = false;
                    stamper.Close();
                    pdfReader.Close();
                }

                writerStream.Position = 0;
                var reader       = new PdfReader(writerStream);
                var importedPage = pdfWriter.GetImportedPage(reader, pageNumber);
                //reader.Close(); // iTextSharp 5.4.1.0 needs this to be open.
                return(iTextSharp.text.Image.GetInstance(importedPage).checkImage());
            }
        }
示例#14
0
        private static void SetWatermark(string originalPdfFileName, string finalFileName, string watermarkText)
        {
            using (var pdfReader = new PdfReader(originalPdfFileName))
            {
                using (var newOutputStream = new FileStream(finalFileName, FileMode.Create))
                {
                    using (PdfStamper stamper = new PdfStamper(pdfReader, newOutputStream))
                    {
                        int pageCount = pdfReader.NumberOfPages;
                        var layer     = new PdfLayer("WatermarkLayer", stamper.Writer);
                        for (int i = 1; i <= pageCount; i++)
                        {
                            var rect             = pdfReader.GetPageSize(i);
                            var watermarkContent = stamper.GetUnderContent(i);
                            //PdfContentByte watermarkContent = stamper.GetOverContent(i);
                            watermarkContent.BeginLayer(layer);
                            watermarkContent.SetFontAndSize(
                                BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 80);

                            var gState = new PdfGState {
                                FillOpacity = 0.6f
                            };
                            watermarkContent.SetGState(gState);

                            watermarkContent.SetColorFill(BaseColor.LIGHT_GRAY);
                            watermarkContent.BeginText();
                            watermarkContent.ShowTextAligned(PdfContentByte.ALIGN_CENTER, watermarkText, rect.Width / 2,
                                                             rect.Height / 2, 45f);
                            watermarkContent.EndText();

                            watermarkContent.EndLayer();
                        }
                    }
                }
            }
        }
示例#15
0
        private void PdfStampInExistingFile(string watermarkImagePath, string sourceFilePath)
        {
            byte[] bytes = File.ReadAllBytes(sourceFilePath);
            var    img   = iTextSharp.text.Image.GetInstance(watermarkImagePath);

            img.SetAbsolutePosition(200, 400);
            PdfContentByte waterMark;

            using (MemoryStream stream = new MemoryStream())
            {
                PdfReader reader = new PdfReader(bytes);
                using (PdfStamper stamper = new PdfStamper(reader, stream))
                {
                    int pages = reader.NumberOfPages;
                    for (int i = 1; i <= pages; i++)
                    {
                        waterMark = stamper.GetUnderContent(i);
                        waterMark.AddImage(img);
                    }
                }
                bytes = stream.ToArray();
            }
            File.WriteAllBytes(sourceFilePath, bytes);
        }
// ---------------------------------------------------------------------------

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

            using (MemoryStream ms = new MemoryStream()) {
                // Create a stamper
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    // Add the annotations
                    int           page = 1;
                    Rectangle     rect;
                    PdfAnnotation annotation;
                    Movie         movie;
                    foreach (string day in PojoFactory.GetDays())
                    {
                        foreach (Screening screening in PojoFactory.GetScreenings(day))
                        {
                            movie      = screening.movie;
                            rect       = GetPosition(screening);
                            annotation = PdfAnnotation.CreateText(
                                stamper.Writer, rect, movie.MovieTitle,
                                string.Format(INFO, movie.Year, movie.Duration),
                                false, "Help"
                                );
                            annotation.Color = WebColors.GetRGBColor(
                                "#" + movie.entry.category.color
                                );
                            stamper.AddAnnotation(annotation, page);
                        }
                        page++;
                    }
                }
                return(ms.ToArray());
            }
        }
示例#17
0
        public byte[] FillFormFields(string templateName, Dictionary <string, string> values)
        {
            using (var outStream = new MemoryStream())
            {
                using (var reader = new PdfReader($"{_hostingEnvironment.ContentRootPath}" +
                                                  $"{Path.DirectorySeparatorChar}CardTemplates" +
                                                  $"{Path.DirectorySeparatorChar}{templateName}.pdf"))
                {
                    using (var stamper = new PdfStamper(reader, outStream))
                    {
                        var acroFields = stamper.AcroFields;
                        foreach (var kvPair in values)
                        {
                            acroFields.SetField(kvPair.Key, kvPair.Value);
                        }

                        // this will flatten it but also remove the values set
                        //stamper.FormFlattening = true;
                    }
                }

                return(outStream.ToArray());
            }
        }
示例#18
0
        private void ExecuteTextFieldAdditions()
        {
            PdfReader  reader  = null;
            PdfStamper stamper = null;

            try {
                reader          = new PdfReader(temporalPath);
                temporalPathAux = Path.GetTempFileName();
                stamper         = new PdfStamper(reader, new FileStream(temporalPathAux, FileMode.Create));

                foreach (var fieldOrder in fieldsToAddList)
                {
                    TextField fieldToAdd = new TextField(stamper.Writer, new Rectangle(fieldOrder.urx, fieldOrder.ury, fieldOrder.llx, fieldOrder.lly), fieldOrder.name);
                    stamper.AddAnnotation(fieldToAdd.GetTextField(), fieldOrder.page);
                    stamper.AcroFields.SetField(fieldOrder.name, "");
                }
                stamper.Close();
                reader.Close();

                File.Delete(temporalPath);
                File.Move(temporalPathAux, temporalPath);
            }
            catch {
                throw new Exception("Error adding new fields");
            }
            finally {
                if (stamper != null)
                {
                    stamper.Close();
                }
                if (reader != null)
                {
                    reader.Close();
                }
            }
        }
示例#19
0
        public string GenerateInvestorDocument(ContractInfo contractInfo)
        {
            string fullName = string.Concat(contractInfo.FirstName, " ", contractInfo.LastName);

            string filePath = @"Template\";

            string fileNameExisting = @"TemplateContract_KaizenForce.pdf";
            string fileNameNew      = @"KaizenForce_" + fullName.Replace(" ", "").Trim() + ".pdf";

            string fullNewPath      = filePath + fileNameNew;
            string fullExistingPath = filePath + fileNameExisting;

            using (var existingFileStream = new FileStream(fullExistingPath, FileMode.Open))

                using (var newFileStream = new FileStream(fullNewPath, FileMode.Create))
                {
                    // Open existing PDF
                    var pdfReader = new PdfReader(existingFileStream);

                    // PdfStamper, which will create
                    var stamper = new PdfStamper(pdfReader, newFileStream);

                    AcroFields fields = stamper.AcroFields;
                    fields.SetField("FullName", fullName);
                    fields.SetField("DocumentNumber", contractInfo.DocumentNumber);
                    fields.SetField("Date", DateTime.Now.ToString("D", CultureInfo.CreateSpecificCulture("es-ES")));

                    // "Flatten" the form so it wont be editable/usable anymore
                    stamper.FormFlattening = true;

                    stamper.Close();
                    pdfReader.Close();

                    return(fileNameNew);
                }
        }
示例#20
0
        private void imprimirToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                Cobranza.Clases.CrearPDF pdf = new Clases.CrearPDF();
                pdf.ToPDFDepositos(dataGridView1.DataSource as DataTable, string.Empty);

                string     nombre      = pdf.Nombre;
                PdfReader  reader      = new PdfReader(nombre);
                string     nombreCopia = Path.GetTempFileName() + ".pdf";
                PdfStamper stamper     = new PdfStamper(reader, new FileStream(nombreCopia, FileMode.Create));
                AcroFields fields      = stamper.AcroFields;
                stamper.JavaScript     = "this.print(true);\r";
                stamper.FormFlattening = true;
                stamper.Close();
                reader.Close();

                System.Diagnostics.Process.Start(nombreCopia);
            }
            catch (Exception)
            {
                MessageBox.Show("Error", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#21
0
文件: PdfHelper.cs 项目: retslig/ANDP
        /// <summary>
        /// Updates the PDF document.
        /// </summary>
        /// <param name="oldPdfPath">The old PDF path.</param>
        /// <param name="newPdfPath">The new PDF path.</param>
        /// <param name="formFields">The form fields.</param>
        public static void UpdatePdfDocument(string oldPdfPath, string newPdfPath, Dictionary <string, string> formFields)
        {
            PdfReader pdfReader = new PdfReader(oldPdfPath);

            using (PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newPdfPath, FileMode.Create)))
            {
                AcroFields pdfFormFields = pdfStamper.AcroFields;

                // set form pdfFormFields
                foreach (KeyValuePair <string, string> formField in formFields)
                {
                    pdfFormFields.SetField(formField.Key, formField.Value);
                }

                // flatten the form to remove editting options, set it to false
                // to leave the form open to subsequent manual edits
                pdfStamper.FormFlattening = true;

                // close the pdf
                pdfStamper.Close();
                // close the pdfreader
                pdfReader.Close();
            }
        }
示例#22
0
        static void AddPageNumber(string fileIn, string fileOut)
        {
            byte[] bytes = File.ReadAllBytes(fileIn);
            Console.WriteLine($"Original PDF size in bytes { bytes}");
            Font blackFont = FontFactory.GetFont("Arial", 12, Font.NORMAL, BaseColor.BLACK);

            using (MemoryStream stream = new MemoryStream())
            {
                PdfReader reader = new PdfReader(bytes);
                using (PdfStamper stamper = new PdfStamper(reader, stream))
                {
                    int pages = reader.NumberOfPages;
                    for (int i = 1; i <= pages; i++)
                    {
                        ColumnText.ShowTextAligned(stamper.GetUnderContent(i), Element.ALIGN_CENTER, new Phrase(i.ToString(), blackFont), 568f, 15f, 0);
                    }
                    Console.WriteLine($"Page Size{pages }");
                }
                bytes = stream.ToArray();

                Console.WriteLine($"Stamped PDF size in bytes { bytes}");
            }
            File.WriteAllBytes(fileOut, bytes);
        }
示例#23
0
        private static void CombineAndSavePdf(string savePath, List <string> lstPdfFiles)
        {
            using (Stream outputPdfStream = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                Document     document = new Document();
                PdfSmartCopy copy     = new PdfSmartCopy(document, outputPdfStream);
                document.Open();
                PdfReader  reader;
                int        totalPageCnt;
                PdfStamper stamper;
                string[]   fieldNames;
                foreach (string file in lstPdfFiles)
                {
                    reader       = new PdfReader(file);
                    totalPageCnt = reader.NumberOfPages;
                    for (int pageCnt = 0; pageCnt < totalPageCnt;)
                    {
                        //have to create a new reader for each page or PdfStamper will throw error
                        reader     = new PdfReader(file);
                        stamper    = new PdfStamper(reader, outputPdfStream);
                        fieldNames = new string[stamper.AcroFields.Fields.Keys.Count];
                        stamper.AcroFields.Fields.Keys.CopyTo(fieldNames, 0);
                        foreach (string name in fieldNames)
                        {
                            stamper.AcroFields.RenameField(name, name + "_file" + pageCnt.ToString());
                        }

                        copy.AddPage(copy.GetImportedPage(reader, ++pageCnt));
                    }

                    copy.FreeReader(reader);
                }

                document.Close();
            }
        }
示例#24
0
        // ---------------------------------------------------------------------------

        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         * @param stationery a PDF that will be added as background
         */
        public byte[] ManipulatePdf(byte[] src, byte[] stationery)
        {
            // Create readers
            PdfReader reader   = new PdfReader(src);
            PdfReader s_reader = new PdfReader(stationery);

            using (MemoryStream ms = new MemoryStream())
            {
                // Create the stamper
                using (PdfStamper stamper = new PdfStamper(reader, ms))
                {
                    // Add the stationery to each page
                    PdfImportedPage page = stamper.GetImportedPage(s_reader, 1);
                    int             n    = reader.NumberOfPages;
                    PdfContentByte  background;
                    for (int i = 1; i <= n; i++)
                    {
                        background = stamper.GetUnderContent(i);
                        background.AddTemplate(page, 0, 0);
                    }
                }
                return(ms.ToArray());
            }
        }
示例#25
0
// ---------------------------------------------------------------------------
        public void Write(Stream stream)
        {
            using (ZipFile zip = new ZipFile()) {
                Stationery      s           = new Stationery();
                StampStationery ss          = new StampStationery();
                byte[]          stationery  = s.CreateStationary();
                byte[]          sStationery = ss.ManipulatePdf(
                    ss.CreatePdf(), stationery
                    );
                byte[] insertPages = ManipulatePdf(sStationery, stationery);
                zip.AddEntry(RESULT1, insertPages);
                // reorder the pages in the PDF
                PdfReader reader = new PdfReader(insertPages);
                reader.SelectPages("3-41,1-2");
                using (MemoryStream ms = new MemoryStream()) {
                    using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    }
                    zip.AddEntry(RESULT2, ms.ToArray());
                }
                zip.AddEntry(Utility.ResultFileName(s.ToString() + ".pdf"), stationery);
                zip.AddEntry(Utility.ResultFileName(ss.ToString() + ".pdf"), sStationery);
                zip.Save(stream);
            }
        }
示例#26
0
// ---------------------------------------------------------------------------

        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         */
        public byte[] ManipulatePdf(string src)
        {
            PdfReader     reader = new PdfReader(src);
            PdfDictionary root   = reader.Catalog;
            PdfDictionary form   = root.GetAsDict(PdfName.ACROFORM);
            PdfArray      fields = form.GetAsArray(PdfName.FIELDS);
            PdfDictionary page;
            PdfArray      annots;

            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                page   = reader.GetPageN(i);
                annots = page.GetAsArray(PdfName.ANNOTS);
                for (int j = 0; j < annots.Size; j++)
                {
                    fields.Add(annots.GetAsIndirectObject(j));
                }
            }
            using (MemoryStream ms = new MemoryStream()) {
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                }
                return(ms.ToArray());
            }
        }
示例#27
0
// ---------------------------------------------------------------------------

        /**
         * Show keys and values passed to the query string with GET
         */
        protected void DoGet(byte[] pdf, Stream stream)
        {
            // We get a resource from our web app
            PdfReader reader = new PdfReader(pdf);

            // Now we create the PDF
            using (PdfStamper stamper = new PdfStamper(reader, stream)) {
                // We add a submit button to the existing form
                PushbuttonField button = new PushbuttonField(
                    stamper.Writer, new Rectangle(90, 660, 140, 690), "submit"
                    );
                button.Text            = "POST";
                button.BackgroundColor = new GrayColor(0.7f);
                button.Visibility      = PushbuttonField.VISIBLE_BUT_DOES_NOT_PRINT;
                PdfFormField submit = button.Field;
                submit.Action = PdfAction.CreateSubmitForm(
                    WebContext.Request.RawUrl, null, 0
                    );
                stamper.AddAnnotation(submit, 1);
                // We add an extra field that can be used to upload a file
                TextField file = new TextField(
                    stamper.Writer, new Rectangle(160, 660, 470, 690), "image"
                    );
                file.Options         = TextField.FILE_SELECTION;
                file.BackgroundColor = new GrayColor(0.9f);
                PdfFormField upload = file.GetTextField();
                upload.SetAdditionalActions(PdfName.U,
                                            PdfAction.JavaScript(
                                                "this.getField('image').browseForFileToSubmit();"
                                                + "this.getField('submit').setFocus();",
                                                stamper.Writer
                                                )
                                            );
                stamper.AddAnnotation(upload, 1);
            }
        }
示例#28
0
        public void Verify_StampText_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            var pdfFile = createSamplePdfFile("Hello DNT!");
            var reader  = new PdfReader(pdfFile);
            var stamper = new PdfStamper(reader, stream);

            var canvas = stamper.GetOverContent(1);

            ColumnText.ShowTextAligned(
                canvas,
                Element.ALIGN_LEFT,
                new Phrase("Hello people!"),
                36, 540, 0
                );

            reader.Close();
            stamper.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
示例#29
0
        public string SignDocument(string documentPdf, DigitalCertificate cert, PdfOptions certOptions, string pathOutput)
        {
            try
            {
                var reader  = new PdfReader(documentPdf);
                var output  = new FileStream(pathOutput, FileMode.Create, FileAccess.Write, FileShare.None);
                var stamper = PdfStamper.CreateSignature(reader, output, '\0');


                var rect       = new iTextSharp.text.Rectangle(10, 10, 0, 0);
                var appearance = stamper.SignatureAppearance;
                appearance.Reason             = "Assinatura digital";
                appearance.SignDate           = certOptions.SignDate;
                appearance.Contact            = certOptions.Contact;
                appearance.SignatureGraphic   = certOptions.SignImage;
                appearance.Location           = certOptions.Location;
                appearance.CertificationLevel = PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED;
                appearance.SetVisibleSignature(rect, 1, certOptions.NameOwnerOfCertificate);
                IExternalSignature pks = new X509Certificate2Signature(cert.Certificate, "sha-256");

                var ce    = new X509CertificateParser();
                var chain = ce.ReadCertificate(cert.Certificate.RawData);

                var lista = new List <X509Certificate> {
                    chain
                };
                ICollection <X509Certificate> lst = lista;

                MakeSignature.SignDetached(appearance, pks, lst, null, null, null, 0, CryptoStandard.CMS);
                return(pathOutput);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#30
0
        /**
         * Fills out a data sheet, flattens it, and adds it to a combined PDF.
         * @param copy the PdfCopy instance (can also be PdfSmartCopy)
         */
        public void AddDataSheets(PdfCopy copy)
        {
            IEnumerable <Movie> movies = PojoFactory.GetMovies();

            // Loop over all the movies and fill out the data sheet
            foreach (Movie movie in movies)
            {
                PdfReader reader = new PdfReader(DATASHEET_PATH);
                using (var ms = new MemoryStream())
                {
                    using (PdfStamper stamper = new PdfStamper(reader, ms))
                    {
                        stamper.AcroFields.GenerateAppearances = true;
                        Fill(stamper.AcroFields, movie);
                        stamper.FormFlattening = true;
                    }
                    reader.Close();
                    reader = new PdfReader(ms.ToArray());
                    copy.AddPage(copy.GetImportedPage(reader, 1));
                    copy.FreeReader(reader);
                }
                reader.Close();
            }
        }
示例#31
0
 /// <summary>
 /// Replace texts.
 /// TODO: Los textos con formato creado en word introducen caracteres entre las palabras y no lo localiza.
 /// </summary>
 public void Replace()
 {
     using (FileStream stream = new FileStream(_pathSource, FileMode.Open))
     {
         using (PdfReader pdfReader = new PdfReader(stream))
         {
             for (int x = 1; x <= pdfReader.NumberOfPages; x++)
             {
                 using (FileStream streamDest = new FileStream(_pathDest, FileMode.Create))
                 {
                     PdfDictionary dict = pdfReader.GetPageN(x);
                     PdfObject     obj  = dict.GetDirectObject(PdfName.CONTENTS);
                     if (obj.GetType() == typeof(PRStream))
                     {
                         ReplacePRStream(obj);
                     }
                     if (obj.GetType() == typeof(PdfArray))
                     {
                         foreach (var r in (PdfArray)obj)
                         {
                             PRIndirectReference ir      = (PRIndirectReference)r;
                             PdfObject           refdObj = pdfReader.GetPdfObject(ir.Number);
                             if (refdObj.IsStream())
                             {
                                 ReplacePRStream(refdObj);
                             }
                         }
                     }
                     using (PdfStamper stamper = new PdfStamper(pdfReader, streamDest))
                     {
                     }
                 }
             }
         }
     }
 }
        public static void ManipulatePdf(String src, String dest)
        {
            string fullPdfPath = dest + "\\Output.pdf";

            if (File.Exists(fullPdfPath))
            {
                File.Delete(fullPdfPath);
            }

            PdfReader reader = new PdfReader(src);

            using (var fileStream = new FileStream(fullPdfPath, FileMode.Create, FileAccess.Write))
            {
                PdfStamper stamper = new PdfStamper(reader, fileStream);
                // Get canvas for page 1
                PdfContentByte cb = stamper.GetOverContent(1);
                // Create template (aka XOBject)
                PdfTemplate xobject = cb.CreateTemplate(80, 120);
                // Add content using ColumnText
                ColumnText column = new ColumnText(xobject);
                column.SetSimpleColumn(new Rectangle(80, 120));
                column.AddElement(new Paragraph("Some long text that needs to be distributed over several lines."));
                column.Go();
                // Add the template to the canvas
                cb.AddTemplate(xobject, 36, 600);
                double angle = Math.PI / 4;
                cb.AddTemplate(xobject,
                               (float)Math.Cos(angle), -(float)Math.Sin(angle),
                               (float)Math.Cos(angle), (float)Math.Sin(angle),
                               150, 600);
                stamper.Close();
            }
            reader.Close();

            Process.Start(fullPdfPath);
        }