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 型ですOrientation = Landscape、Size = LetterのPdfPageから_gfxを既に定義しています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%。*
ここに私がやろうとしていることの例があります:
"こんにちは世界!" "こんにちは世界!"
そして、ここに私が得るものがあります:
"Hello World!"
"こんにちは世界!"
また、印刷領域の制限やフォント サイズ、フォント スタイルが異なるため、正しい数のスペースを含む単純な 1 つの文にこれらを書き込めません。