Найдите номер страницы объекта iTextSharp
Я пытаюсь записать изображение на определенную страницу pdf-файла с помощью iTextSharp. К сожалению, у меня есть около 10 или 15 различных pdf-файлов, в которых мне нужно разместить изображение на другой странице.
Пример: PDFFile1: изображение переходит на страницу 3,
PDFFile2: изображение переходит на страницу 6,
PDFFile3: изображение переходит на страницу 5 и т. д...
Мой текущий код вытягивает количество страниц и записывает изображение на самой последней странице. Как я могу вытащить номер страницы, где текстовое поле объект "образ" расположен?
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());
}
}
1 ответ:
Как уже указывалось в моем комментарии Сегодня утром:
Вы уже используете
position
член классаFieldPosition
:Rectangle rect = pdfStamper.AcroFields.GetFieldPositions("Image")[0].position;
FieldPosition
однако он может предложить больше; он определяется как:Таким образом, номер страницы, который вы просите, равенpublic class FieldPosition { public int page; public Rectangle position; }
int page = pdfStamper.AcroFields.GetFieldPositions("Image")[0].page;