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