| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- using iTextSharp.text;
- using iTextSharp.text.pdf;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using PdfFont = iTextSharp.text.Font;
- public class HeaderFooter : PdfPageEventHelper
- {
- private PdfTemplate totalPages;
- private BaseFont baseFont;
- private PdfFont headFont;
- private PdfFont pdfFont;
- private Image headLogo;
- public override void OnOpenDocument(PdfWriter writer, Document document)
- {
- baseFont = BaseFont.CreateFont(Application.streamingAssetsPath + "/Fonts/成绩字体.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
- headLogo = Image.GetInstance(Application.streamingAssetsPath + "/Logos/成绩logo.png");
- headFont = new PdfFont(baseFont, 10, PdfFont.NORMAL, new BaseColor(128, 128, 128));
- pdfFont = new PdfFont(baseFont, 12);
- totalPages = writer.DirectContent.CreateTemplate(100, 100);
- }
- public override void OnEndPage(PdfWriter writer, Document document)
- {
- base.OnEndPage(writer, document);
- AddHeader(writer, document);
- AddFooter(writer, document);
- }
- public override void OnCloseDocument(PdfWriter writer, Document document)
- {
- base.OnCloseDocument(writer, document);
- // 在文档关闭时写入总页数
- //ColumnText.ShowTextAligned(totalPages, Element.ALIGN_LEFT,
- // new Phrase((writer.PageNumber - 1).ToString(), headFont),
- // 2, 2, 0);
- }
- private void AddHeader(PdfWriter writer, Document document)
- {
- PdfPTable headerTable = new PdfPTable(2);
- headerTable.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
- //设置比例宽度
- headerTable.SetWidths(new float[] { 1, 1.5f });
- //图片高度
- float targetHeight = 30;
- //图片单元格
- headLogo.ScaleAbsoluteWidth((targetHeight / headLogo.Height) * headLogo.Width);
- headLogo.ScaleAbsoluteHeight(targetHeight);
- PdfPCell imageCell = new PdfPCell(headLogo);
- imageCell.Border = Rectangle.BOTTOM_BORDER;
- imageCell.HorizontalAlignment = Element.ALIGN_LEFT;
- imageCell.BorderColor = BaseColor.GRAY;
- imageCell.BorderWidth = 1f;
- imageCell.PaddingBottom = 5f;
- //创建一个单元格
- PdfPCell cell = new PdfPCell(new Phrase("虚拟仿真实验中心", headFont));
- //单元格边界
- cell.Border = Rectangle.BOTTOM_BORDER;
- cell.BorderColor = BaseColor.GRAY;
- cell.BorderWidth = 1f;
- cell.PaddingBottom = 5f;
- cell.HorizontalAlignment = Element.ALIGN_LEFT;
- cell.VerticalAlignment = Element.ALIGN_BOTTOM;
- headerTable.AddCell(imageCell);
- headerTable.AddCell(cell);
- headerTable.WriteSelectedRows(0, -1, document.LeftMargin, document.PageSize.Height - 20, writer.DirectContent);
- }
- /// <summary>
- /// 添加页脚
- /// </summary>
- /// <param name="writer"></param>
- /// <param name="document"></param>
- private void AddFooter(PdfWriter writer, Document document)
- {
- PdfPTable footerTable = new PdfPTable(2);
- footerTable.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
- PdfPCell leftCell = new PdfPCell(new Phrase("虚拟仿真实验考核系统 © 2025", headFont));
- leftCell.Border = Rectangle.TOP_BORDER;
- leftCell.BorderColor = BaseColor.GRAY;
- leftCell.HorizontalAlignment = Element.ALIGN_LEFT;
- PdfPCell middleCell = new PdfPCell(new Phrase($"第{writer.PageNumber}页", headFont));
- middleCell.Border = Rectangle.TOP_BORDER;
- middleCell.BorderColor = BaseColor.GRAY;
- middleCell.HorizontalAlignment = Element.ALIGN_RIGHT;
- //PdfPCell rightCell = new PdfPCell(new Phrase("总页数", headFont));
- //rightCell.Border = Rectangle.TOP_BORDER;
- //rightCell.BorderColor = BaseColor.GRAY;
- //rightCell.HorizontalAlignment = Element.ALIGN_RIGHT;
- footerTable.AddCell(leftCell);
- footerTable.AddCell(middleCell);
- //footerTable.AddCell(rightCell);
- footerTable.WriteSelectedRows(0, -1, document.LeftMargin, document.BottomMargin - 10, writer.DirectContent);
- }
- }
|