Install-Package iTextSharp;
Install-Package System.Drawing.Common;
private static void InsertsImagesListToPDF(string pdfFile, List<string> imgsList)
{
string pdfTitle = "SMOOTHTECH";
string iconPath = @"../../../Images/logo.png";
using (FileStream fileStream = new FileStream(pdfFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (Document doc = new Document(PageSize.A1, 36, 36, 144, 50))
{
using (PdfWriter pdfWriter = PdfWriter.GetInstance(doc, fileStream))
{
var pdfHeaderFooter = new PdfHeaderFooter(pdfTitle, iconPath);
pdfWriter.PageEvent=pdfHeaderFooter;
doc.Open();
int imgIdx = 0;
foreach (var imgFile in imgsList)
{
if (!File.Exists(imgFile))
{
continue;
}
var img = iTextSharp.text.Image.GetInstance(imgFile);
img.ScaleToFit(doc.PageSize.Width-doc.LeftMargin-doc.RightMargin,
doc.PageSize.Height-doc.TopMargin-doc.BottomMargin);
img.Alignment=Element.ALIGN_CENTER;
doc.NewPage();
doc.Add(img);
Console.WriteLine($"{++imgIdx},{imgFile}");
}
doc.Close();
}
}
}
}
public class PdfHeaderFooter : PdfPageEventHelper
{
private PdfTemplate totalPages;
private BaseFont baseFont;
private string logoTitle;
private string logoPath;
private BaseColor baseColor = new BaseColor(64, 128, 128, 255);
public PdfHeaderFooter(string logoTitleValue = "Analysis Report", string logoPathValue = null)
{
logoTitle = logoTitleValue;
this.logoPath = logoPathValue;
}
public override void OnOpenDocument(PdfWriter writer, Document document)
{
baseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false);
totalPages = writer.DirectContent.CreateTemplate(50, 50);
}
public override void OnEndPage(PdfWriter writer, Document document)
{
var cb = writer.DirectContent;
// --- HEADER ---
float leftMargin = document.LeftMargin;
float rightMargin = document.RightMargin;
float pageWidth = document.PageSize.Width;
float usableWidth = pageWidth - leftMargin - rightMargin;
// Draw title
ColumnText.ShowTextAligned(cb, Element.ALIGN_LEFT,
new Phrase(logoTitle, new Font(Font.FontFamily.HELVETICA, 30, Font.BOLD, baseColor)),
document.LeftMargin, document.Top + 30, 0);
// Draw logo (right aligned)
if (File.Exists(logoPath))
{
var logoImg = Image.GetInstance(logoPath);
logoImg.ScaleToFit(70, 70);
logoImg.SetAbsolutePosition(pageWidth - rightMargin - logoImg.ScaledWidth, document.Top + 10);
cb.AddImage(logoImg);
}
// Line below header
cb.SetLineWidth(10f);
cb.SetColorStroke(baseColor);
cb.MoveTo(leftMargin, document.Top);
cb.LineTo(pageWidth - rightMargin, document.Top);
cb.Stroke();
// --- FOOTER ---
float footerY = document.Bottom - 40;
// Line above footer
cb.SetLineWidth(10f);
cb.SetColorStroke(baseColor);
cb.MoveTo(leftMargin, footerY + 30);
cb.LineTo(pageWidth - rightMargin, footerY + 30);
cb.Stroke();
// Page number: X/Y
string text = "" + writer.PageNumber + "/";
float len = baseFont.GetWidthPoint(text, 12);
cb.BeginText();
cb.SetFontAndSize(baseFont, 12);
cb.SetTextMatrix(pageWidth / 2 - 30, footerY);
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(totalPages, pageWidth / 2 - 30 + len, footerY);
}
public override void OnCloseDocument(PdfWriter writer, Document document)
{
totalPages.BeginText();
totalPages.SetFontAndSize(baseFont, 12);
totalPages.SetTextMatrix(0, 0);
totalPages.ShowText("" + (writer.PageNumber));
totalPages.EndText();
}
}
![image]()
![image]()
![image]()