Я знаю, что этот вопрос старый и на него есть принятый ответ, однако этот вопрос возникает одним из первых при поиске решения PDFsharp.
Для справки, добиться этого в PDFsharp очень просто. Класс PdfDocument
, находящийся в пространстве имен PdfSharp.Pdf
, содержит набор страниц (PdfDocument.Pages
). Все, что вам нужно сделать, это перебрать коллекцию и добавить счетчик страниц где-нибудь на каждой странице, используя объект XGraphics
, который вы можете создать с помощью XGraphics.FromPdfPage(PdfPage)
.
using PdfSharp.Pdf; // PdfDocument, PdfPage
using PdfSharp.Drawing; // XGraphics, XFont, XBrush, XRect
// XStringFormats
// Create a new PdfDocument.
PdfDocument document = new PdfDocument();
// Add five pages to the document.
for(int i = 0; i < 5; ++i)
document.AddPage();
// Make a font and a brush to draw the page counter.
XFont font = new XFont("Verdana", 8);
XBrush brush = XBrushes.Black;
// Add the page counter.
string noPages = document.Pages.Count.ToString();
for(int i = 0; i < document.Pages.Count; ++i)
{
PdfPage page = document.Pages[i];
// Make a layout rectangle.
XRect layoutRectangle = new XRect(0/*X*/, page.Height-font.Height/*Y*/, page.Width/*Width*/, font.Height/*Height*/);
using (XGraphics gfx = XGraphics.FromPdfPage(page))
{
gfx.DrawString(
"Page " + (i+1).ToString() + " of " + noPages,
font,
brush,
layoutRectangle,
XStringFormats.Center);
}
}
Стоит отметить, что если объект XGraphics уже существует для данной страницы, перед созданием нового необходимо удалить старый. Это не удастся:
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx1 = XGraphics.FromPage(page);
XGraphics gfx2 = XGraphics.FromPage(page);
person
DAAlex
schedule
25.01.2016