Here is a simple example to show how we can attach files to a new PDF file:
using System.Diagnostics; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace PDFAttachment { class Program { static void Main(string[] args) { using (var pdfDoc = new Document(PageSize.A4)) { var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create)); pdfDoc.Open(); pdfDoc.Add(new Phrase("Test")); var filePath = @"C:\path\logo.png"; var fileInfo = new FileInfo(filePath); var pdfDictionary = new PdfDictionary(); pdfDictionary.Put(PdfName.MODDATE, new PdfDate(fileInfo.LastWriteTime)); var fs = PdfFileSpecification.FileEmbedded(pdfWriter, filePath, fileInfo.Name, null, true, null, pdfDictionary); pdfWriter.AddFileAttachment("desc.", fs); } Process.Start("Test.pdf"); } } }
Or into an existing PDF file:
using System.Diagnostics; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace PDFAttachment { class Program { static void Main(string[] args) { var reader = new PdfReader("Test.pdf"); using (var stamper = new PdfStamper(reader, new FileStream("newTest.pdf", FileMode.Create))) { var filePath = @"C:\path\logo.png"; addAttachment(stamper, filePath, "desc."); stamper.Close(); } Process.Start("newTest.pdf"); } private static void addAttachment(PdfStamper stamper, string filePath, string description) { var fileInfo = new FileInfo(filePath); var pdfDictionary = new PdfDictionary(); pdfDictionary.Put(PdfName.MODDATE, new PdfDate(fileInfo.LastWriteTime)); var pdfWriter = stamper.Writer; var fs = PdfFileSpecification.FileEmbedded(pdfWriter, filePath, fileInfo.Name, null, true, null, pdfDictionary); stamper.AddFileAttachment(description, fs); } } }
source share