Как расположить и центрировать текст в PDFsharp?

Мне нужен «Лист настройки работы» по центру под заголовком. Как это сделать?

Вот что я пробовал:

// Create an empty page
PdfPage page = document.AddPage();
page.Size = PageSize.Letter;
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);

//XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode,
                                                PdfFontEmbedding.Always);

// Create a font
XFont HeadingFont = new XFont("Times New Roman", 20, XFontStyle.Bold);
XFont BodyFont = new XFont("Times New Roman", 12);
// Draw the text
gfx.DrawString("Texas Exterior Systems", HeadingFont, XBrushes.Black,
  new XRect(0, 0, page.Width, page.Height),
  XStringFormats.TopCenter);

gfx.DrawString("Job Setup Sheet", BodyFont, XBrushes.Black,
  new XRect(0, 0, page.Width, page.Height),
  XStringFormats.Center);

person texas697    schedule 17.09.2014    source источник


Ответы (1)


XRect, который вы передаете DrawString, всегда покрывает всю страницу. Указав правильное верхнее и/или нижнее положение прямоугольника, текст можно отобразить в этом положении.

Пример кода можно найти здесь:

void DrawText(XGraphics gfx, int number)
{
    BeginBox(gfx, number, "Text Styles");

    const string facename = "Times New Roman";

    //XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
    XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.WinAnsi, PdfFontEmbedding.Default);

    XFont fontRegular = new XFont(facename, 20, XFontStyle.Regular, options);
    XFont fontBold = new XFont(facename, 20, XFontStyle.Bold, options);
    XFont fontItalic = new XFont(facename, 20, XFontStyle.Italic, options);
    XFont fontBoldItalic = new XFont(facename, 20, XFontStyle.BoldItalic, options);

    // The default alignment is baseline left (that differs from GDI+)
    gfx.DrawString("Times (regular)", fontRegular, XBrushes.DarkSlateGray, 0, 30);
    gfx.DrawString("Times (bold)", fontBold, XBrushes.DarkSlateGray, 0, 65);
    gfx.DrawString("Times (italic)", fontItalic, XBrushes.DarkSlateGray, 0, 100);
    gfx.DrawString("Times (bold italic)", fontBoldItalic, XBrushes.DarkSlateGray, 0, 135);

    EndBox(gfx);
}
person I liked the old Stack Overflow    schedule 17.09.2014
comment
хорошая информация. Другой вопрос. каждый раз, когда я меняю его в визуальной студии, мне нужно очищать и перестраивать проект. есть ли более быстрый способ сделать это? - person texas697; 17.09.2014
comment
Нажимаю F5, Visual Studio компилирует изменения и запускает программу. Вы исключили элементы в Configuration Manager? - person I liked the old Stack Overflow; 17.09.2014
comment
Если это официальная учетная запись PDFsharp, можете ли вы указать ее в своем профиле? - person TheLethalCoder; 01.02.2017
comment
Я не понимаю, как мне разместить его в центре тогда? - person csharpdudeni77; 21.06.2021
comment
@ rogue39nin См. значение параметра XStringFormats.Center в вопросе. Рассчитайте XRect для каждой строки, не используйте всю страницу везде, как показано в вопросе. - person I liked the old Stack Overflow; 21.06.2021