Ema112 Ответов: 2

Как добавить логотип/изображения на существующий PDF-файл, используя ASP.NET с помощью C#?


Я хочу добавить логотип/изображение динамически кодовым способом в существующий PDF-файл с помощью asp.net с помощью c#.
При попытке ниже код логотип добавляется, но в виде нового pdf-файла. Я хочу добавить к существующему pdf файлу

Что я уже пробовал:

private void AddLogo()
        {
            string pdfpath = Server.MapPath(".") + "/pdf/test.pdf";
            string imagepath = Server.MapPath(".") + "/logo/test.jpg";
            Document doc = new Document();

            try
            {
                PdfWriter.GetInstance(doc, new FileStream(pdfpath, FileMode.Create));
                doc.Open();

                //doc.Add(new Paragraph("GIF"));
                iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagepath);
                image.ScalePercent(24f);
                doc.Add(image);
            }
            catch (Exception ex)
            {
                //Log error;
            }
            finally
            {
                doc.Close();
            }
        }

2 Ответов

Рейтинг:
2

David_Wimbley

Просто дикая и сумасшедшая догадка, но я думаю, что причина, по которой вы всегда создаете новые файлы, заключается в этой строке.

PdfWriter.GetInstance(doc, new FileStream(pdfpath, FileMode.Create));


Вы используете FileMode.Создавать...вероятно, вам следует изменить его на FileMode.OpenOrCreate или filemode.Открыть.


Рейтинг:
0

manu_dhobale

Пожалуйста, попробуйте это

using (Stream inputPdfStream = new FileStream(Server.MapPath("~") + "/pdf/test.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
           using (Stream inputImageStream = new FileStream(Server.MapPath("~") + "/logo/test.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
           using (Stream outputPdfStream = new FileStream(Server.MapPath("~") + "/pdf/Result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
           {
               var reader = new PdfReader(inputPdfStream);
               var stamper = new PdfStamper(reader, outputPdfStream);
               var pdfContentByte = stamper.GetOverContent(1);

               iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);
               image.SetAbsolutePosition(100, 100);
               pdfContentByte.AddImage(image);
               stamper.Close();
           }