using System; using iTextSharp.text.pdf; using PDFPatcher.Model; namespace PDFPatcher.Processor { sealed class PageProcessorContext { /// 正在处理的 PDF 文档。 public PdfReader Pdf { get; } /// 正在处理的页码。 public int PageNumber { get; } /// 标记页面内容是否已被更改。 public bool IsPageContentModified { get; set; } PdfDictionary _Page; /// 获取正在处理的页面。 public PdfDictionary Page => _Page ??= Pdf.GetPageN(PageNumber); PdfPageCommandProcessor _processor; /// 获取正在处理的页面指令集合。 public IPdfPageCommandContainer PageCommands { get { if (_processor == null) { _processor = new PdfPageCommandProcessor(); _processor.ProcessContent(PdfReader.GetPageContent(Page), Page.Locate(PdfName.RESOURCES)); } return _processor; } } public PageProcessorContext(PdfReader pdf, int pageNumber) { Pdf = pdf; PageNumber = pageNumber; } /// 写入页面指令到当前处理的页面。 internal void WritePageCommands() { _processor.WritePdfCommands(Pdf, PageNumber); } } }