0

I have a pdf template I created using LiveCycle Designer. Inside it, I have 3 Image Fields that I created, ImageField1, ImageField2, ImageField3. The images are located on a url, let's call it "http://images.com/img/IMAGENAME.jpg", and the user selects the images prior to generating the pdf in which case I store the image names in a string array.

Is it possible to add these images programmatically into the Image Fields? The methods I've tried so far have only lead to a corrupted pdf that won't open at all.

public string Foo(int id)
    {
        try
        {

            var file = string.Empty;
            var property = ((IRepositoryBase)PropertyRepository).GetById<Property>(id);
            var purchase = ((IRepositoryBase)PropertyRepository).GetByPropertyId<PropertyPurchase>(id);
            var inspection = ((IRepositoryBase)PropertyRepository).GetByPropertyId<PropertyInspection>(id);
            file = HttpContext.Current.Server.MapPath("\\Assets\\documents\\originals\\Brochure.pdf");
            var tmp = HttpContext.Current.Server.MapPath("\\Assets\\documents\\temps\\");



            tmp += string.Format("{0}-Brochure.pdf", property.Id);

            var pdfReader = new PdfReader(file);
            var pdfStamper = new PdfStamper(pdfReader, new FileStream(tmp, FileMode.Create));
            var pdfFormFields = pdfStamper.AcroFields;
            var pht = property.BrochurePhoto;
            string[] photos = pht.Split(' ');
            PdfContentByte cB = new PdfContentByte(pdfStamper.Writer);



            if (photos[0] != null)
            {
                iTextSharp.text.Image photoToPdf1 = iTextSharp.text.Image.GetInstance(new Uri("http://images.com/img/" + photos[0].ToString() + ".jpg"));
                cB.AddImage(photoToPdf1);
            }
            if (photos[1] != null)
            {
                iTextSharp.text.Image photoToPdf2 = iTextSharp.text.Image.GetInstance(new Uri("http://images.com/img/" + photos[1].ToString() + ".jpg"));
                cB.AddImage(photoToPdf2);
            }
            if (photos[2] != null)
            {
                iTextSharp.text.Image photoToPdf3 = iTextSharp.text.Image.GetInstance(new Uri("http://images.com/img/" + photos[2].ToString() + ".jpg"));
                cB.AddImage(photoToPdf3);
            }

            pdfStamper.FormFlattening = false;
            pdfStamper.Close();
            return string.Format("{0}-Brochure.pdf", property.Id);

        }
        catch (Exception ex)
        {
            Log.Error(ex);
            return string.Empty;


        }

    }
4

0 回答 0