J'essaie d'écrire une image sur une page spécifique d'un fichier pdf en utilisant iTextSharp. Malheureusement, j'ai environ 10 ou 15 fichiers pdf différents dans lesquels je dois placer l'image sur une page différente.
Exemple : Fichier PDF1 : l'image se trouve à la page 3,
PDFFile2 : L'image va à la page 6,
PDFFile3 : L'image va à la page 5 etc...
Mon code actuel extrait le nombre de pages et écrit l'image sur la toute dernière page. Comment puis-je obtenir le numéro de page où se trouve l'objet "Image" de la boîte de texte ?
private void writePDF(string PhysicalName)
{
try
{
string pdfTemplate = HttpContext.Current.Server.MapPath("Documents\\" + PhysicalName);
string ConsentTemplateName = PhysicalName.Replace(".pdf", "");
string newFile = HttpContext.Current.Server.MapPath("Documents\\").ToString() + ConsentTemplateName + Session["Number"].ToString() + ".pdf";
string NewConsentPhysicalPath;
NewConsentPhysicalPath = newFile;
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
pdfStamper.SetEncryption(PdfWriter.STANDARD_ENCRYPTION_128, null, null, PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING);
AcroFields pdfFormFields = pdfStamper.AcroFields;
iTextSharp.text.Rectangle rect = pdfStamper.AcroFields.GetFieldPositions("Image")[0].position;
string imageFilePath = HttpContext.Current.Server.MapPath("Documents\\Images" + Convert.ToInt64(Session["Number"].ToString()) + ".png");
iTextSharp.text.Image png = iTextSharp.text.Image.GetInstance(imageFilePath);
png.ScaleAbsolute(rect.Width, rect.Height);
png.SetAbsolutePosition(rect.Left, rect.Bottom);
int numOfPages = pdfReader.NumberOfPages;
pdfStamper.GetOverContent(numOfPages).AddImage(png); //Get page number of "Image"
pdfStamper.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}