1.創建頁眉頁腳
SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;
//畫筆
PdfPen pen = new PdfPen(pdf.StyleConfig.PenColor, pdf.StyleConfig.PenWidth);
//文字樣式和位置 字體和對齊方式
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(pdf.StyleConfig.HeaderFont, pdf.StyleConfig.HeaderEmSize));
for (int i = 0; i < pdf.Pages.Count; i++)
{
//偏移變量
float x = pdf.PdfMargins.Left;
float y = 0;
//圖片size
float width = 0;
float height = 0;
//繪制圖片
if (!string.IsNullOrEmpty(imageUrl))
{
PdfImage headerImage = PdfImage.FromFile(imageUrl);
width = headerImage.Width / 4;
height = headerImage.Height / 4;
y = pdf.PdfMargins.Top;
pdf.Pages[i].Canvas.DrawImage(headerImage, x, y, width, height);
}
//繪制線段
float x1 = pdf.PdfMargins.Left + width + 30;
float x2 = pageSize.Width - pdf.PdfMargins.Right;
float y1 = pdf.PdfMargins.Top + height;
pdf.Pages[i].Canvas.DrawLine(pen, x1, y1, x2, y1);
if (!string.IsNullOrEmpty(text))
{
// 繪入文字
SizeF size = font.MeasureString(text);
x = pageSize.Width - pdf.PdfMargins.Right - size.Width;
y = height - size.Height + (pdf.PdfMargins.Top / 3 * 2);
pdf.Pages[i].Canvas.DrawString(text, font, PdfBrushes.Black, x, y);
}
}
}
2.創建頁腳
if (!string.IsNullOrEmpty(footerText))
{
//獲取頁面大小
SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;
//偏移量
float x = 0;
float y = 0;
//畫筆
PdfPen pen = new PdfPen(pdf.StyleConfig.PenColor, pdf.StyleConfig.PenWidth);
//文字樣式和位置
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(pdf.StyleConfig.FooterFont, pdf.StyleConfig.FooterEmSize), true);
for (int i = 0; i < pdf.Pages.Count; i++)
{
//繪制文字
SizeF size = font.MeasureString(footerText);
x = (pageSize.Width - size.Width) / 2;
y = pageSize.Height - pdf.PdfMargins.Bottom - size.Height - 2;
pdf.Pages[i].Canvas.DrawString(footerText, font, PdfBrushes.Black, x, y);
}
}
3.創建水印
if (!string.IsNullOrEmpty(text))
{
//創建True Type字體
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(Pdf.StyleConfig.WaterMarkFont, Pdf.StyleConfig.WaterMarkEmSize), true);
//測量文字所占的位置大小
SizeF size = font.MeasureString(text);
//計算偏移量
float x = (float)(size.Width * System.Math.Sqrt(2) / 4);
float y = (float)(size.Height * System.Math.Sqrt(2) / 4);
//遍歷文檔頁
foreach (PdfPageBase page in Pdf.Pages)
{
//設置透明度
page.Canvas.SetTransparency(Pdf.StyleConfig.Transparency);
//將坐標系向右,向下平移
page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - x - y, page.Canvas.Size.Height / 2 + x - y);
//將坐標系逆時針旋轉45度
page.Canvas.RotateTransform(Pdf.StyleConfig.Angle);
//繪制文本
page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
}
}
4.二維碼
if (!string.IsNullOrEmpty(data))
{
SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;
//創建BarcodeSettings對象
BarcodeSettings.ApplyKey("keyNumber");
BarcodeSettings settings = new BarcodeSettings();
//設置條碼類型為二維碼
settings.Type = BarCodeType.QRCode;
//設置二維碼數據
settings.Data = data;
settings.ShowText = false;
//設置數據類型
settings.QRCodeDataMode = QRCodeDataMode.Auto;
//設置寬度
settings.X = 0.7f;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.GenerateImage();
//繪制二維碼圖形到PDF
PdfImage pdfImage = PdfImage.FromImage(image);
float x = pageSize.Width - pdf.PdfMargins.Right - pdfImage.PhysicalDimension.Width;
float y = 5;
if (!string.IsNullOrEmpty(imageUrl))
{
PdfImage headerImage = PdfImage.FromFile(imageUrl);
y += headerImage.Height / 4;
}
y += pdf.PdfMargins.Top;
pdf.Pages[0].Canvas.DrawImage(pdfImage, x, y);
}
