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);
}
}
}