Независимо от того, использую я XTextFormatter или нет, я получаю ту же ошибку о том, что LayoutRectangle должен иметь высоту 0 или что-то вроде этого.
new PdfSharp.Drawing.Layout.XTextFormatter(_gfx).DrawString(text
, new PdfSharp.Drawing.XFont(fontName, fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle)
, new PdfSharp.Drawing.XSolidBrush(PdfSharp.Drawing.XColor.FromArgb(foreColour))
, new PdfSharp.Drawing.XRect(new PdfSharp.Drawing.XPoint(xPos, yPos), new PdfSharp.Drawing.XPoint(xLimit, yLimit))
, PdfSharp.Drawing.XStringFormats.Default);
fontStyle имеет тип System.Drawing.FontStyle
foreColour имеет тип System.Drawing.Color
Я уже предопределил _gfx из PdfPage с Ориентация = Пейзаж, Размер = Письмо
xPos и yPos - это параметры типа double, то же самое с xLimit и yLimit .
Я получаю ошибку во время выполнения, что
LayoutRectangle должен иметь высоту
ноль (0) ...
По определению, прямоугольник должен иметь высоту, в противном случае назовите его линией! Я не понимаю! ...
Я пытался использовать метод XGraphics.DrawString () напрямую, и я получаю ту же ошибку. Кажется, что я не могу использовать LayoutRectangle, но должен управлять тем, чтобы текст помещался в нужной области вручную.
var textFont = new PdfSharp.Drawing.XFont(fontName, fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
while (xPos + _gfx.MeasureString(text, textFont).Width > xLimit)
textFont = new PdfSharp.Drawing.XFont(fontName, --fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
while (yPos + _gfx.MeasureString(text, textFont).Height > yLimit && fontSize > 0)
textFont = new PdfSharp.Drawing.XFont(fontName, --fontSize, (PdfSharp.Drawing.XFontStyle)fontStyle);
_gfx.DrawString(text
, textFont
, new PdfSharp.Drawing.XSolidBrush(PdfSharp.Drawing.XColor.FromArgb(foreColour))
, new PdfSharp.Drawing.XPoint(xPos, yPos));
Хотя значение переменной yPos является точно таким же значением!
* yPos = Page.Height * .4093, либо 40,93% от высоты страницы. *
Приведу пример того, что я пытаюсь сделать:
"Привет, мир!" "Привет
World! "
И вот что я получаю:
"Hello World!"
«Привет, мир!»
И из-за разных пределов области печати и размера шрифта, а также из-за разного стиля шрифта я не могу просто написать их в одном простом предложении, включающем правильное количество пробелов.